【问题标题】:When i make an automatic Property what happen's in the background?当我创建一个自动属性时,后台会发生什么?
【发布时间】:2017-09-19 13:01:19
【问题描述】:

编辑:与this 完全不同的问题我在问自动属性如何在内部工作

当我创建一个自动属性时,后台会发生什么?

这等于

public int SomeProperty {get; set;}

这个

 private int _someField;
 public int SomeProperty 
 {
    get { return _someField;}
    set { _someField = value;}
 }

这是字面上发生的事情(即创建了一个私有字段)还是只是为了解释事情而呈现它并且它的工作方式不同

【问题讨论】:

  • 一个完全不同的问题为什么将其标记为重复 -_-
  • 我重新打开了这个问题,因为重复问题的答案只提到了一次转换,即代码与此等价,但他们没有提到属性只是方法以及获取和设置方法是在幕后生成的

标签: c# automatic-properties


【解决方案1】:

是的,就是这样:

public int SomeProperty {get; set;}

是一个语法糖:

private int _someField;
public int SomeProperty 
{
   get { return _someField;}
   set { _someField = value;}
}

它是一个语法糖:

private int _someField;

public int get_SomeProperty()
{
    return _someField;
}

public void set_SomeProperty(int value)
{
    _someField = value;
} 

您可以使用ildasm.exe自己查看实现:

生成了两种方法来获取和设置私有字段的值。唯一的区别是生成的字段的名称。

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多