国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C#3.0 中對(duì)象初始化器(Object Initializers)和集合初始化器(Collection Initializers)

2019-11-18 16:31:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

由于我看到幾篇講 對(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<Person> people = new List<Person>{
            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();
    }
}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 防城港市| 星座| 菏泽市| 阿尔山市| 桂平市| 合水县| 阿城市| 鸡泽县| 武乡县| 仙桃市| 宁南县| 阿拉善左旗| 舞钢市| 青岛市| 呼伦贝尔市| 扎赉特旗| 汉阴县| 潢川县| 隆尧县| 溧水县| 青铜峡市| 大悟县| 子长县| 阜新市| 门源| 清徐县| 锦州市| 墨玉县| 台东县| 申扎县| 个旧市| 广汉市| 荣成市| 辽阳市| 崇阳县| 错那县| 若尔盖县| 尼勒克县| 峡江县| 福安市| 五莲县|