C# 匿名類型


一、什么叫做匿名類?

  匿名類就是沒有名字的類。匿名類不能被引用,只能再創建的時候用new語句來聲明。

二、匿名類的優勢以及應用場景;

  1、匿名類型提供了一種方便的方法,可以用來將一組只讀屬性封裝到單個的對象中,而且並不需要首先顯示定義一個類型。

  2、類型名由編譯器生成,並且不能在源代碼級使用。每個屬性的類型由編譯器推斷。

  3、可通過是用new運算符和對象初始值創建匿名類型。

  4、匿名類型通常用在查詢表達式的 Select 子句中,以便返回原序列中每個對象的屬性子集(Linq 中使用的比較多)。

三、匿名類的應用; 

//匿名類型
var news = new {title="冰紅茶",day="2019-4-10",author="康師傅"};
showInfo(news);    
//
static void ShowInfo<T>(T news) { dynamic d = news; Console.WriteLine(d.title); Console.WriteLine(d.day); Console.WriteLine(d.author); }

四、var隱式類型;

  隱式類型var,聲明變量是無需指定數據類型的,編譯器會根據賦值判斷其類型的一種機制,它的優勢就在於,通過var這個隱式類型,可以提高開發人員的開發效率,很多時候可以不考慮對象的類型。

五、var 的使用規則;

  1、var 類型會被編譯器根據初始值的類型推斷出具體的類型;

  2、var 類型的局部變量必須賦予初始值;

  3、無法將null賦值給隱式類型的局部變量;

  4、var 類型變量的定義必須是在方法中或者在屬性get、set 訪問器中;

  5、var 不能做方法的參數;

  6、不能當作返回值類型;

  7、語句中只能聲明一次變量,聲明后不能更改類型;

六、匿名方法;

  匿名方法是C#2.0引入的一個新的特性,它允許開發者內聯(inline)聲明自己的函數代碼而無須使用委托函數(delegate function)。

  匿名方法的應用場景: 

            1、需要一個臨時方法,這個方法使用次數極少;

            2、這個方法的代碼很短,甚至可能比方法聲明都短的情況下使用;

七、匿名方法的實例:

/*匿名方法的演化過程*/
MySumHandler m1 = new MySumHandler(Sum); m1(2,3); MySumHandler m2 = Sum; m2(3,4); //匿名方法,C#2.0 MySumHandler m3 = delegate(int i, int j){Console.WriteLine("{0}+{1}={2}",i,j,(i+j));}; m3(5,6); //lambda,表達式C#3.0 MySumHandler m4 = (i,j)=>{Console.WriteLine("{0}+{1}={2}",i,j,(i+j));};

八、Func和Action的使用:

  Func<TResult>Action<T>是.NET的內置委托。Func<TResult>要求由返回值。Action<T>要求無返回值。

  在使用時,Func<T1,T2,……,T16,TResult>中尖括號中的最后一個類型就是返回值。

  Action<T1,T2,……,T16>,T1 至 T16 是參數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM