c#3.0系列:Automatic Property

來源:互聯網
上載者:User

之前的做法:

在c#3.x出來之前,相信大家已經習慣通過一個private field + public property的髮式來定義和實現一個public Property。就如下面方式實現。

1class person
2  {
3    private int age;
4    private string _name;
5    public int Age
6    {
7      get { return age; }
8      set { age = value; }
9    }
10    public string Name
11    {
12      get { return _name; }
13      set { _name = value; }
14    }
15  }

顯然你可以在Property中的set/get代碼塊中,我們可以不受限制地定義我們 的商務邏輯,但是在大多是場合下,我們都是像上面的code一樣直接對一個定義 的field進行操作:對其讀寫。但是我們如果根據項目的需要,例如作為 Business Entity的Class,需要封裝非常多的資料,我們需要為不同類型的資料 分別定義一個Property,這樣不斷重複的工作大家一定覺得很厭煩。

Automatic Property Overview

在c#3.x出來之後,我們可以通過Automatic Property來簡化我們的操作。例 如:

1class Employee
2  {
3    //public string Name { get; } error
4    public string Name { get; set; }
5    public int Age{get; private set;}
6    public Employee(string name,int age )
7    {
8      this.Name = name;
9      this.Age = age;
10    }
11  }

上面的好處我就不用說了。

Automatic Property IN CLR

首先讓我們看看c#3.x出來之前和出來之後,編譯器是怎麼處理的:

大家可以看到,C#3.x僅僅是基於.NET Programming Language,而不是基 於.NET Framework的。加了一些必要的code,使原本我們看起來顯得殘缺的code (比如缺少對Property 的實現)變得完整。在啟動並執行時候,這些code和原來的 code是完全一樣的。Automatic Property代碼裡多處了兩個域 <Age>k_BackingField和<Name>k_BackingField,他們的作用就是 :他們分別對應著兩個Property(Age,Name),其作用和person中定義的兩個 Field(Age,Name)完全一樣。代碼如下:

internal class Employee
{
// Fields
[CompilerGenerated]
private int <Age>k__BackingField;
[CompilerGenerated]
private string <Name>k__BackingField;

// Methods
public Employee(string name, int age);

// Properties
public int Age { get; private set; }
public string Name { get; set; }
}

Quiz for Automatic Property

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.