我不理解为什么C# 3.0引入了auto implemented property语言特性。
当你这样说时,它有什么区别呢?
public string FirstName;
比public string FirstName { get; set; }
我不理解为什么C# 3.0引入了auto implemented property语言特性。
当你这样说时,它有什么区别呢?
public string FirstName;
比public string FirstName { get; set; }
只是为了补充其他人所说的,声明公共字段,该字段可读可写。声明公共自动属性,虽然属性是公共的,但仍然可以添加修饰符来控制对 get/set 级别的可访问性。
public string FirstName { get; private set; }
您的类的用户将FirstName视为公共属性。但是,他/她无法对其进行写操作。
因此使用:
public string FirstName { get; private set; }
这是一个易于使用的属性,符合面向对象编程规则。
自动属性是编译器生成的常规属性,它们使用像任何常规属性一样的后备字段,但您不需要编写该代码。这里是一个非常有说明性的示例(感谢Reflector)编译器生成的代码:
[CompilerGenerated]
private string <ContentType>k__BackingField;
public string ContentType
{
[CompilerGenerated]
get
{
return this.<ContentType>k__BackingField;
}
[CompilerGenerated]
set
{
this.<ContentType>k__BackingField = value;
}
}