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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章