新聞中心
C#3.0 中對(duì)象初始化器(Object Initializers) 和集合初始化器(Collection Initializers) ,就是簡(jiǎn)化我們的代碼,讓本來(lái)幾行才能寫(xiě)完的代碼一行寫(xiě)完。這樣在LINQ的使用中,我們才不會(huì)把一個(gè)LINQ表達(dá)式寫(xiě)的巨復(fù)雜無(wú)比。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
由于我看到幾篇講對(duì)象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 的文章,都是一個(gè)簡(jiǎn)單的例子,一些稍稍特殊一點(diǎn)的場(chǎng)景的初始化賦值并沒(méi)有涉及,所以我特整理這篇博客。
關(guān)于對(duì)象初始化器(Object Initializers) 的一些問(wèn)題:
問(wèn)題一: 對(duì)象初始化器允許只給部分值賦值么?即不給其中一些值賦值
答案:允許;參考后面的代碼。
問(wèn)題二:對(duì)象初始化器允許給internal 的成員賦值?(私有成員肯定不用想了,肯定不能賦值。)
答案:允許;參考下面的代碼。
- public class Person
- {
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public int Age { get; set; }
- private int test01 = 25;
- internal int test02;
- }
- class Program
- {
- static void Main(string[] args)
- {
- Person person = new Person { FirstName = "Scott", LastName = "Guthrie", test02 = 56, };
- Console.WriteLine(person.test02);
- Console.WriteLine(person.Age);
- Console.ReadLine();
- }
- }
問(wèn)題三:對(duì)象初始化器是否可以結(jié)合構(gòu)造函數(shù)一起使用?
答案:可以參看如下代碼就可以正常使用:
var cookie3 = new System.Net.Cookie("MyCookie", "Jose") { Comment = "a cookie" };
我們?cè)跇?gòu)造函數(shù)中給 Cookie 的名字和值賦了值,在初始化構(gòu)造器中給 Comment 屬性賦了值。
問(wèn)題四:構(gòu)造函數(shù)賦值和初始化構(gòu)造器賦值那個(gè)***被執(zhí)行?
比如下述代碼,結(jié)果是那個(gè)呢??
- static void Main(string[] args)
- {
- var cookie = new System.Net.Cookie("MyCookie", "Jose") { Name = "test02", Comment = "a cookie" };
- Console.WriteLine(cookie.Name);
- Console.ReadLine();
- }
答案:
構(gòu)造函數(shù)比初始化構(gòu)造器更早被執(zhí)行。
上述WriteLine 寫(xiě)出來(lái)的信息為:test02
集合初始化器(Collection Initializers) 的一些問(wèn)題:
問(wèn)題一:集合初始化構(gòu)造器中是否可以構(gòu)造集合的一項(xiàng)為空值?
答案:可以,參看下述代碼。
問(wèn)題二:集合初始化構(gòu)造器是否可以初始化Hashtable ?
答案:可以。這時(shí)候相當(dāng)于用了兩個(gè)對(duì)象初始化構(gòu)造器,參看下面代碼:
- public class Person
- {
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public int Age { get; set; }
- private int test01 = 25;
- internal int test02;
- }
- class Program
- {
- static void Main(string[] args)
- {
- List
people = new List { - new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
- new Person { FirstName = "Bill", LastName = "Gates", test02 = 85},
- new Person { FirstName = "Susanne", Age = 32 },
- null,
- };
- Hashtable pp = new Hashtable {
- { 1, new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 } },
- { 2, new Person { FirstName = "Bill", LastName = "Gates", test02 = 85} },
- { 3, new Person { FirstName = "Susanne", Age = 32 } },
- { 4, null },
- };
- Console.ReadLine();
- }
- }
通過(guò)這些常見(jiàn)的問(wèn)題,希望對(duì)你有幫助。
當(dāng)前文章:C#3.0中對(duì)象初始化器和集合初始化器
標(biāo)題鏈接:http://fisionsoft.com.cn/article/ccojihp.html


咨詢
建站咨詢
