C#中屬性實爲方法,如果類中只是定義了屬性,則編譯器會自動生成相應的字段

1.C#中屬性實際是一種方法,如果Java中沒有字段而是直接對用方法獲取字段(Java中稱爲屬性)

如下是一個Test的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }

  //要測試的類
    public class Test 
    {

       //屬性
        public string James { set; get; }

     //字段
        public int x;
    }
}



編譯後,我們用Visual Studio 2010查看這兩個類的中間代碼爲:

對比如下

C#代碼                                                                         中間語言代碼:

public string James { set; get; }                         get_James:string()   方法

         set_James:Void(string)   帶參方法

                                                                                 <James>K_BackingField: private string   編譯器自動生成的字段   (待會繼續對比,是否是字段)

結論:1.屬性是方法  2.聲明屬性,編譯器會自動生成相應的字段

 public int x;                                                          x:public int 32


可以看出,編譯器根據屬性自動生成的字段代碼不同於編譯器根據字段生成的代碼,編譯器會在自動生成的字段屬性上做一些修飾如<James>K_BackingField:


發佈了28 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章