c# 3.0特性-- 物件初始化器
有乙個簡單的定義類,
class book
public string name
public double price
}
有三個屬性,並且用自動屬性語法來定義。如果需要例項化並初始化這個類的乙個物件例項,就必須執行以下的語句:
book book1 = new book();
book1.sn = "6900000000";
book1.name = "學c#";
book1.price = 69.50;
如果在類定義中新增帶引數建構函式如下:
public book(string _sn, string _name, double _price)
那麼把例項化和初始化合併起來,**如下:
book book1 = new book("6900000000", "學c#", 69.50);
由於新增了無引數的建構函式,且定義book類裡面並沒有提供無引數建構函式的方法,所以
book book1 = new book(); // 沒有無引數的建構函式,會報錯
提示錯誤
此時向類定義中新增無參建構函式。
進入物件初始化器,這是無需在類中新增額外的**(如建構函式)就可以例項化和初始化**的方法。例項化物件時,要為每個初始化的、可公開訪問的屬性或字段使用名稱-值對,來提供其值。其語法如下:
book book1 = new book ;
使用物件初始化器,不能明確呼叫類的建構函式,而是自動呼叫預設的無參建構函式。這是物件初始化器在設定引數之前呼叫的,以便在需要時為預設建構函式中的引數提供預設值。如果提供了帶引數的建構函式,那麼在類中新增無引數的建構函式。
在book類中新增乙個屬性(type)type,還另外定義乙個 type類,其屬性包括 (int)id、(string) name,這裡使用物件初始化器的巢狀使用,**如下
book book1 = new book
};
注意: 物件初始化器沒有替代非預設建構函式。在初始化物件時,可以使用物件初始化器來設定屬性和字段值,但這並不意味著總是知道需要初始化什麼狀態。通過建構函式可以為函式指定物件需要什麼值,在執行**,以立即響應這些值。
C 3 0新特性之物件初始化器
物件初始化器用於指定物件的乙個或多個可訪問的字段或屬性的值,通過 進行封閉起來,多個字段賦值之間通過逗號分割。具體語法元素是 1.物件建立表示式 new 型別 型別引數 可選 物件或集合初始化器可選 new 型別物件或集合初始化器 2.物件或集合初始化器 物件初始化器 集合初始化器 3.物件初始化器...
C 3 0之物件與集合初始化
我們知道在c 2.0中要初始化乙個物件可以用構造器,或者宣告公有屬性,然後在new乙個物件之後在對屬性賦值。必須一步一步的來,在c 3.0中可以有一種很簡單的方法對物件和集合進行初始化工作。看個例子 list int num newlist int 相當於 icollection.add t 即nu...
C 3 0 物件初始化設定
原文連線 有類如下 public class document public string content c 2.0 為 document 物件的屬性賦值,可能通過如下的方式 document doc new document doc.title 標題 doc.content 內容 用了三行 能不...