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:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值