国产探花免费观看_亚洲丰满少妇自慰呻吟_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();
    }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜黄县| 龙陵县| 同心县| 工布江达县| 平度市| 梧州市| 大冶市| 辽阳县| 宁远县| 岐山县| 佛坪县| 阿合奇县| 南丰县| 额尔古纳市| 伽师县| 疏勒县| 达日县| 福安市| 江阴市| 汉中市| 灵璧县| 南康市| 龙胜| 漳平市| 定边县| 台南市| 花莲县| 绥化市| 梁山县| 赫章县| 温泉县| 咸阳市| 沐川县| 张北县| 澎湖县| 磐安县| 海原县| 甘孜| 米泉市| 贵定县| 嘉荫县|