二初始化
如果一個類有public字段在建立類的對象實例時可以使用下面的代碼來初始化這些字段;
public class MyClass{public String field;public int field;public bool field;}MyClass my = new MyClass();myfield = abcd;myfield = ;myfield = true;
在C#中提供了一種更簡便的方法來初始化這些public變量代碼如下
MyClass my = new MyClass
{
field
=
abcd
field
=
;
field
=true;
};
上面的代碼的寫法有些象帶參數的構造方法但這將不是調用了MyClass的構造方法(因為MyClass並沒有帶三個參數的構造方法)而只是C#編譯器玩的一個魔術實際上上面的代碼在編譯後仍然和使用傳統的初始化字段的方法一樣只是在語法上看起來更簡單(至少不用寫那麼多個my)要注意的的使用這種方法初始化必須是public的字段(不能是protectedprivate或默認修飾符的字段)
在C#中還改進了對集合類的初始化方式(使其初始化的方式類似於數組)但遺憾的是這種初始化方式只支持用泛型的集合類也就是說只有實現了SystemCollectionsGenericICollection的集合類才可以使用這種初始化方法代碼如下
List myList = new List {
data
data
data
};
foreach (string data in myList)
{
textBox
AppendText(data);
}
三匿名類
在C#中提供了一種新的建立類的方法代碼如下
var my = new
{
field
=
abcd
field
=
};
MessageBox
Show(my
field
);
C#編譯器會自動推斷my是一個有兩個public字段的類的對象實例也就是說相當於下面的代碼
public class MyClass{public String field;public int field;}var my = new MyClass();myfield = abcd;myfield = ;MessageBoxShow(myfield);
在第一部分講到如果動態語言在給變量賦值的過程中改變了變量類型如果將其轉換為強類型語言當然一種方法是將變量聲明成object類型或是使用匿名類來解決這個問題代碼如下
var myVar = new
{
field_string =
abcd
field_int =
;
};
後根據當前這個變量所使用的類型來決定該使用哪個類字段
[] [] []
From:http://tw.wingwit.com/Article/program/net/201311/15229.html