到现在为止,我对Properties
和Methods
是C#中的两件事有所印象。但是后来我做了下面的事情。
这对我来说是个“开眼神”。我期待一种属性stringProp
和一种方法stringProp
,但是我得到了这一点。
为什么会这样?有人可以解释一下。
最佳答案
是的,编译器会为属性生成一对get和set方法,并为自动实现的属性生成一个私有(private)支持字段。
public int Age {get; set;}
等于:
private int <Age>k__BackingField;
public int get_Age()
{
return <Age>k__BackingField;
}
public void set_Age(int age)
{
<Age>k__BackingField = age;
}
访问您的属性的代码将被编译为调用这两种方法之一。这正是将公共(public)场所更改为公共(public)属性(property)的重大突破之一。
参见乔恩·斯基特(Jon Skeet)的Why Properties Matter。