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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 16:32:11
字體:
來源:轉載
供稿:網友

C# 3.0 中對象初始化器(Object Initializers)  和 集合初始化器(Collection Initializers) ,就是簡化我們的代碼,讓本來幾行才能寫完的代碼一行寫完。這樣在LINQ的使用中,我們才不會把一個LINQ表達式寫的巨復雜無比。

 

由于我看到幾篇講 對象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 的文章,都是一個簡單的例子,一些稍稍特殊一點的場景的初始化賦值并沒有涉及,所以我特整理這篇博客。

 

關于對象初始化器(Object Initializers) 的一些問題:

 

問題一: 對象初始化器允許只給部分值賦值么?即不給其中一些值賦值

答案:允許;參考后面的代碼。

問題二:對象初始化器允許給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();
    }

}

 

問題三:對象初始化器是否可以結合構造函數一起使用?

答案:可以參看如下代碼就可以正常使用:

var cookie3 = new System.Net.Cookie("MyCookie", "Jose") { Comment = "a cookie" };

我們在構造函數中給 Cookie 的名字和值賦了值,在初始化構造器中給 Comment 屬性賦了值。

 

問題四:構造函數賦值和初始化構造器賦值那個最先被執行?

比如下述代碼,結果是那個呢??

static void Main(string[] args)
{
    var cookie = new System.Net.Cookie("MyCookie", "Jose") { Name = "test02", Comment = "a cookie" };
    Console.WriteLine(cookie.Name);
    Console.ReadLine();
}

答案:

構造函數比初始化構造器更早被執行。

上述WriteLine 寫出來的信息為:test02

 

集合初始化器(Collection Initializers) 的一些問題:

 

問題一:集合初始化構造器中是否可以構造集合的一項為空值?

答案:可以,參看下述代碼。

 

問題二:集合初始化構造器是否可以初始化Hashtable ?

答案:可以。這時候相當于用了兩個對象初始化構造器,參看下面代碼:

 

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();
    }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辰溪县| 阆中市| 沾化县| 饶平县| 凉山| 红原县| 永丰县| 克拉玛依市| 黑山县| 上饶市| 安龙县| 外汇| 伊通| 吉隆县| 封丘县| 兰溪市| 兴国县| 利辛县| 简阳市| 河北省| 金堂县| 综艺| 赤壁市| 昌江| 东山县| 田东县| 定襄县| 咸宁市| 明溪县| 托克托县| 万山特区| 龙州县| 乌海市| 德昌县| 河津市| 盐亭县| 韩城市| 长治县| 双城市| 全椒县| 郯城县|