C 3 0特性 物件初始化器

2021-06-15 09:25:28 字數 1369 閱讀 1072

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 內容 用了三行 能不...