程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#3.0對象初始化器和集合初始化器

C#3.0對象初始化器和集合初始化器

編輯:關於C#

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved