1. 程式人生 > >一個例子幫你搞懂C#語言高階特性系列(04) --- 匿名型別

一個例子幫你搞懂C#語言高階特性系列(04) --- 匿名型別

有時候你可能需要定義類來封裝一些資料,但並不需要任何方法、事件和其他自定義的功能。或者說你需要定義一個只是用於當前程式的臨時型別,在這種情況下,匿名型別將會派上用場。請看下面的程式碼:

using System;

namespace Com.LoonStudio {

	class Program {
		static void Main() {
			// 定義匿名型別
			var car1 = new { Brand = "Benz", MaxSpeed = 200 };
			var car2 = new { Brand = "Benz", MaxSpeed = 200 };
			Console.WriteLine(car1.Equals(car2));	// true(基於值的語義進行比較)
			Console.WriteLine(car1 == car2);		// false
			Console.WriteLine(car1.GetType() == car2.GetType());	// true
			Console.WriteLine(car1.GetType().Name);	// <>f__AnonymouseType0`2
			Console.WriteLine(car1.ToString());		// { Brand = Benz, MaxSpeed = 200 }

			// 包含匿名型別的匿名型別
			var person = new {
						Name = "Hao", RegDate = DateTime.Now, 
						Car = new {Brand = "Benz", MaxSpeed = 200}
			};
			Console.WriteLine(person.Car.Brand);	// Benz
			Console.WriteLine(person);	// { Name = Hao, RegDate = 2013/12/6 23:12:17, Car = { Brand = Benz, MaxSpeed = 200 } }
		}
	}
}


相關推薦

一個例子C#語言高階特性系列04 --- 匿名型別

有時候你可能需要定義類來封裝一些資料,但並不需要任何方法、事件和其他自定義的功能。或者說你需要定義一個只是用於當前程式的臨時型別,在這種情況下,匿名型別將會派上用場。請看下面的程式碼: using

c語言的隱式自動資料型別轉換

一.算術運算子中的轉換規則: double ←── float 高↑long↑unsigned↑int ←── char,short 低 注意:圖中橫向箭頭表示必須的轉換,如兩個float型數參加運算,雖然它們型別相同,但仍要先轉成double型再進行運算,結果亦為doub

面試不再怕,20行Python代碼LRU算法

工程 獲取 技術 頭結點 能夠 如果 img mage python代碼 LRU算法在後端工程師面試中,是一個比較常出現的題目,這篇文章帶大家一起,理解LRU算法,並最終用Python輕松實現一個基於LRU算法的緩存。 緩存是什麽 先看一張圖,當我們訪問網頁

一個例子機器學習

近年來,機器學習和大資料領域的突破進展使人工智慧急速回溫,訓練計算機模擬甚至實現人類的學習行為則是目前人工智慧領域最受關注的研究課題之一。 很多人都難以想象,看似冷冰冰的機器如何能在短時間內學得一身本領的? 大資料、分析、物聯網、雲技術……最近的幾年裡,沒有這些

一文C語言回撥函式

什麼是回撥函式我們先來看看百度百科是如何定義回撥函式的:回撥函式就是一個通過函式指標呼叫的函式。如果你把函式的指標(地址)作為引數傳遞給另一個函式,當這個指標被用來呼叫其所指向的函式時,我們就說這是回撥函式。回撥函式不是由該函式的實現方直接呼叫,而是在特定的事件或條件發生時由

一個例子回撥和監聽模式的用法

       首先還是老套路,先弄明白回撥和監聽者模式。(回撥在我上篇分享已經提到過了,不懂的可以翻閱我寫的點選開啟連結(一個能讓你一輩子不會忘記的例子))。        監聽者模式定義(這裡實現的

一文 Android 檔案描述符

介紹檔案描述符的概念以及工作原理,並通過原始碼瞭解 Android 中常見的 FD 洩漏。 一、什麼是檔案描述符? 檔案描述符是在 Linux 檔案系統的被使用,由於Android基 於Linux 系統,所以Android也繼承了檔案描述符系統。我們都知道,在 Linux 中一切

《手把手教C語言》學習筆記4---程式碼規範

程式設計過程中需要遵守編譯器的各種約定,例如以下程式碼: 1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4

C語言簡單說】二:第一個C語言程式詳解1

如有錯誤請給與糾正… 上一個教程只說明瞭第一個C語言程式原始碼中的: printf("Hello Wrold!"); 這行程式碼的含義,現在我們來說說全部程式碼;當然為了各位的方便,我就把那個程式

《手把手教C語言》學習筆記1---C語言的特點

學習C語言的原因,主要是需要使用C語言程式設計,我用故我學,應該是最主要的原因了。 C語言的定位:C語言嚴格意義上只能算是中級語言,是面向過程程式語言的集大成者,雖然這種語言有很多的問題,但總體

演算法-一步步教如何用c語言實現堆排序非遞迴

看了左神的堆排序,覺得思路很清晰,比常見的遞迴的堆排序要更容易理解,所以自己整理了一下筆記,帶大家一步步實現堆排序演算法 首先介紹什麼是大根堆:每一個子樹的最大值都是子樹的頭結點,即根結點是所有結點的最大值 堆排序是基於陣列和二叉樹思想實現的(二叉樹是腦補結構,實際是陣列) 堆排序過程 1、陣列建

Webpack實戰:教webpack如果實現程式碼分片code splitting

2020年春節已過,本來打算回鄭州,卻因為新型冠狀病毒感染肺炎的疫情公司推遲了上班的時間,我也推遲了去鄭州的時間,在家多陪娃幾天。以前都是在書房學習寫部落格,今天比較特殊,抱著電腦,在樓頂晒著太陽,陪著家人,寫著部落格。 前面的幾篇文章主要告訴大家如何安裝、配置webpack、webpack實現樣式分離

C語言代碼訓練營2

周末 int main 基本 之前 lin 例題 鏈接 params 上一篇的評論中,大家反饋評論中貼代碼無法排版。我們改一下規則,大家可以把自己實現的代碼發布在自己的簡書博文中,之後把鏈接貼在評論中。這樣也方便大家日後追溯。 當然,也可以直接發郵件給我。希望大家堅持打卡,

C語言攻略指南流程控制篇

... cpp 流程控制 printf 循環結構 多重 -a 1-43 continue 流程控制語句,或者說控制流語句,是用於控制程序計算操作執行的次序,使我們能實現判斷,選擇,循環等操作。本篇將逐一描述 C語言中的流程控制語句。 選擇結構 if 語句 if(表達式

XMU C語言程序設計實踐3

col stdio.h 元素 ans hide wap 出口 b- 二維 問題描述: 以一個n的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙,設計一個程序,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。 對於本問題需用棧實現“窮舉求解”算法,即:

C語言代碼訓練

color tro 題型 blank adding bsp 喜歡 add 方便 今天我們先來講解一道C語言的經典例題,也是從零開始系列中的一道課後練習題。 請用控制臺程序繪制如下圖案。 循環經典例題 分析情況 這個題目是要求打印30行"*",每行打印的個數不同。通過這

C語言的printf()語句

C語言 編程入門  在前面幾篇博文中,大家會發現我使用了多次printf()這個語句,那麽今天我們就講一講如何使用printf()語句 。  首先,我們來看一下printf的基本格式: printf("輸出的文字"); printf("輸出格式",需要輸出的變量); &

C語言的printf()語句

C語言  上次給大家介紹了printf()語句中的格式字符,這篇博客我們就來說說如何使用他們,我們就用常用的格式字符為大家舉幾個例子。(PS:本博文的出處請看C語言的printf()語句(上))首先,我們來看一下整型的例子。 #include<stdio.h> int main

C語言數據結構

span 有關 sel [] lec 原則 存儲 情況 規格 算法和算法的衡量 一、算法 算法是為了解決某類問題而規定的一個有限長的操作序列。一個算法必須滿足以下五個重要特性: 1.有窮性 對於任意一組合法輸入值,在執行又窮步驟之後一定能結束,即:算法中的每個步驟都能在

聽說看了這篇文章就徹底了什麽是OPC

文檔 files 兩個 tool 共存 硬件 信息 更改 消息 從2000年初以來,我們就一直在使用OPC軟件互操作性標準,而那些正準備踏入和想要踏入工業自動化領域的人們卻對這些含義感到困惑。 所以在本中,我將系統地為你梳理OPC知識。 OPC首字母縮寫詞代表什麽? 問一