C#匿名類型簡(jiǎn)單介紹
C# 3.0新語(yǔ)言特性還是比較常見(jiàn)的東西,這里我們主要介紹C#匿名類型,包括介紹C#匿名類型允許定義行內(nèi)類型,無(wú)須顯式定義類型等方面。
總體來(lái)說(shuō),Visual Studio 2008和.NET 3.5是建立在.NET2.0核心的基礎(chǔ)之上,.NET2.0核心本身將不再變化(如果不了解.NET2.0的朋友,請(qǐng)參看MSDN或者一些經(jīng)典的書(shū)籍),C# 3.0新語(yǔ)言特性在.NET2.0基礎(chǔ)上進(jìn)行了改進(jìn),這些改進(jìn)的功能可以大大簡(jiǎn)化我們編寫程序。關(guān)于C# 3.0新語(yǔ)言特性在博客園里的很多朋友都介紹了,我在這里簡(jiǎn)單介紹一下,記錄自己所學(xué)的東西,也為后面的LINQ打下基礎(chǔ)。
C# 3.0新語(yǔ)言特性和改進(jìn)包括:
◆自動(dòng)屬性(Auto-Implemented Properties)
◆隱含類型局部變量(Local Variable Type Inference)
◆匿名類型(Anonymous Types)
◆對(duì)象與集合初始化器(Object and Collection Initializers)
◆擴(kuò)展方法(Extension Methods)
◆Lambda表達(dá)式和Lambda表達(dá)式樹(shù) (Lambda Expression and Lambda Expression Trees)
C#匿名類型(Anonymous Types)
C#匿名類型允許定義行內(nèi)類型,無(wú)須顯式定義類型。常和var配合使用來(lái)聲明匿名類型。
- var p1 = new { Id = 1, Name = "YJingLee", Age = 22 };//屬性也不需要申明
- var p2 = new { Id = 2, Name = "XieQing", Age = 25 };
- p1 = p2;//p1,p2結(jié)構(gòu)相同,可以互相賦值
在這里編譯器會(huì)認(rèn)為p1,p2相當(dāng)于:
- public class SomeType
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public int Age { get; set; }
- }
那么數(shù)組怎么定義呢?使用"new[]"關(guān)鍵字來(lái)聲明數(shù)組,加上數(shù)組的初始值列表。像這樣:
- var intArray = new[] { 2, 3, 5, 6 };
- var strArray = new[] { "Hello", "World" };
- var anonymousTypeArray = new[]
- {
- new { Name = "YJingLee", Age = 22 },
- new { Name = "XieQing", Age = 25 }
- };
- var a = intArray[0];
- var b = strArray[0];
- var c = anonymousTypeArray[1].Name;
C#匿名類型要點(diǎn):
1. 可以使用new關(guān)鍵字調(diào)用匿名初始化器創(chuàng)建一個(gè)匿名類型的對(duì)象。
2. 匿名類型直接繼承自System. Object。
3. 匿名類型的成員是編譯器根據(jù)初始化器推斷而來(lái)的一些讀寫屬性。
【編輯推薦】