為了提供更合理的建構函式,我們不得不進行多次建構函式的過載,使得使用者的呼叫更加簡單。但是這樣的排列組合隨著引數的增加成幾何級增長,的確很不方便。現在有了object and collection initializer(物件和集合初始化器)就方便多了。
舉個例子:
private class catpublic string name
}
cat cat = new cat ;
listcats = new list,new cat(),
new cat()
};
好了,常識性的普及就到這裡。現在讓我講講一些特殊的。
public class myclass
public listmycollection
}正確的方式是:
myclass test = new myclass()
};public class myclass
public dictionarymydictionary
正確的方法是:
myclass test = new myclass()
mydictionary = new dictionary()
,
,
一開始覺得寫nested的initializer,**不太好讀。現在發現的樹形結構裡使用nested的initializer能夠把樹的結構給表現得比較清楚。所以推薦大家也試試看。舉個wf 4.0的工作流樹吧。
sequence sequence = new sequence()
displayname = "my sequence",
activities =
new writeline()
text="start"
new flowchart()
displayname = "my flowchart",
nodes =
new flowstep()
action = new if()
else = new while(),
then = new delay()
new writeline()
text="end"
看,工作流就出來了,連帶著工作流的層級關係也表明了。
物件初始化器和集合初始化器
c 語言開發團隊在c 3.0中增加了乙個名為 物件初始化器 object initializer 的特性 它能初始化乙個物件中的所有允許訪問的字段和屬性。別以為這和你沒關係。我們先來看乙個你非常熟悉不過的 user operator new user operator.id 1 operator.p...
C 物件和集合的初始化器
using system using system.collections.generic using system.linq using system.text using system.threading.tasks 商品名稱 public string name 商品描述 public str...
物件初始化器與集合初始化器
物件初始化器 使用物件初始化器,可以在建立時直接向物件賦值,無需顯示的呼叫物件的建構函式。利用這個技術可發人員可以建立匿名型別,顯著的減少編寫物件初始化語句的 new p 不採用物件初始化器寫的 user new user user.id 1 user.pwd 123 user.name 孫悟空 採...