物件初始化器與集合初始化器

2021-07-25 22:57:05 字數 2213 閱讀 8075

物件初始化器:
使用物件初始化器,可以在建立時直接向物件賦值,無需顯示的呼叫物件的建構函式。利用這個技術可發人員可以建立匿名型別,顯著的減少編寫物件初始化語句的**。 

new p

不採用物件初始化器寫的**:

user =new user();  

user.id=1;

user.pwd=「123」;

user.name="孫悟空"

採用物件初始化器:

user user= new user(id = 1,  

,name = "孫悟空員",pwd= "123";);

初始化多個物件屬性的時候,物件初始化器幫了不少忙。那麼初始化多個物件的時候,我們也自然有了集合初始化器。

集合初始化器:

沒採用集合初始化器:

ilistusers= new list();  

users.add(new user);

users.add(new user);

users.add(new user);

採用集合初始化器:

ilistusers= new list);  

new user);

new user);

}

關於物件初始化器(object initializers) 的一些問題:

問題一: 物件初始化器允許只給部分值賦值麼?即不給其中一些值賦值

答案:允許;參考後面的**。

問題二:物件初始化器允許給internal 的成員賦值?(私有成員肯定不用想了,肯定不能賦值。)

答案:允許;參考下面的**。

public class person

public string lastname

public int age

private int test01 = 25;

internal int test02;

}class program

;console.writeline(person.test02);

console.writeline(person.age);

console.readline();

}}

問題三:物件初始化器是否可以結合建構函式一起使用?

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

var cookie3 = new system.net.cookie("mycookie", "jose") ;

我們在建構函式中給 cookie 的名字和值賦了值,在初始化構造器中給 comment 屬性賦了值。

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

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

static void main(string args)

;console.writeline(cookie.name);

console.readline();

}

答案:建構函式比初始化構造器更早被執行。

上述writeline 寫出來的資訊為:test02

集合初始化器(collection initializers) 的一些問題:

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

答案:可以,參看下述**。

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

答案:可以。這時候相當於用了兩個物件初始化構造器,參看下面**:

public class person

public string lastname

public int age

private int test01 = 25;

internal int test02;

}class program

,new person ,

new person ,

null,

};hashtable pp = new hashtable },

}, },,};

console.readline();

}}

物件初始化器和集合初始化器

c 語言開發團隊在c 3.0中增加了乙個名為 物件初始化器 object initializer 的特性 它能初始化乙個物件中的所有允許訪問的字段和屬性。別以為這和你沒關係。我們先來看乙個你非常熟悉不過的 user operator new user operator.id 1 operator.p...

C 物件初始化器與集合初始化器的若干問題

c 3.0 中物件初始化器 object initializers 和 集合初始化器 collection initializers 就是簡化我們的 讓本來幾行才能寫完的 一行寫完。這樣在linq的使用中,我們才不會把乙個linq表示式寫的巨複雜無比。由於我看到幾篇講 物件初始化器 object i...

擴充套件方法 物件與集合初始化器

擴充套件方法 靜態類包含的方法必須都是靜態方法。擴充套件方法允許我們在不改變原有類的情況下,擴充套件現有型別中的例項方法,是一種編譯時的技術。public static class myclass 必須是靜態類 class program 物件與集合初始化器 public class point s...