1. 程式人生 > 程式設計 >深入瞭解c# 匿名型別

深入瞭解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));};

八、Func和Action的使用:

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

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

  Action<T1,……,T16>,T1 至 T16 是引數。

以上就是深入瞭解c# 匿名型別的詳細內容,更多關於C# 匿名型別的資料請關注我們其它相關文章!