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: