C#3.0中自動屬性和對象初始化器

來源:互聯網
上載者:User

C#3.0中定義屬性更加方便,不用再在像之前的版本那樣的繁瑣,需要先定義儲存資料的欄位,然後再定義屬性器,現在只需要定義屬性器就可以了,其它的有編譯器自動為我們完成,就可以省去定義欄位時需要的那些時間;在對象初始化的時候我們可在物件建構的時候實現對象屬性的初始化工作,和集合初始化類似。

1.匿名屬性

定義屬性如下:

public class  Employee
{
public int Id { get; set; }
public  string Name { get; set; }
public string Sex { get; set;  }
public int Age { get; set; }
public string  BirthDate { get; set; }
}
在C#3.0 之前的寫法如下:
public class Employee
{
private int _id;
private  string _name;
private string _sex;
private int  _age;
private string _birthDate;

         public int Id
{
get { return _id; }
set { _id  = value; }
}
public string Name
{
get {  return _name; }
set { _name = value; }
}
public  string Sex
{
get { return _sex; }
set { _sex  = value; }
}
public int Age
{
get { return  _age; }
set { _age = value; }
}
public string  BirthDate
{
get { return _birthDate; }
set {  _birthDate = value; }
}
}

僅從代碼量上就前者 比後者減少了2/3的代碼,這對提高效率是顯而易見的,那麼這些代碼都到哪裡 去了呢?其實那些額外的代碼都是由編譯器為我們完成的,編譯器會將那些我們 “省去"的代碼編譯成託管IL代碼的時候補進去,兩者中代碼在最終 產生的IL代碼的體積是差不多的。

上圖中的IL代碼中我們看到了 k_BackingField之類的欄位就是編譯器 自動產生的欄位代碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.