从性能的角度来看,自动实现的属性和手动实现的属性之间有什么区别吗?
因为正如我们所知,它们是在运行时创建的
自动属性不是在运行时创建的,而是在编译时生成的。与using
非常相似,它们有助于减少您需要进行的键入量。它们只需翻译成您本来可以手动编写的代码。
没有性能差异。除了支持字段名称之外,生成的代码与手动执行的代码相同。
正如@dasblinkenlight所强调的,作为"安全名称"的备份名称(如中所示,永远无法在C#中创建)可能会导致无法正确处理名称的序列化问题。
没有区别。自动属性在编译时转换为正常属性。所以这个:
public int Prop { get; set; }
被制成类似于这样的东西:
private int _PropField;
public int Prop {
get { return _PropField; }
set { _PropField = value; }
}
自动属性是语法上的糖,意味着它们是编写属性的简写
摘自MSDN:
在C#3.0及更高版本中,自动实现的属性使当不需要额外的逻辑时,属性声明更简洁在属性访问器中。它们还允许客户端代码创建对象当您如以下示例所示声明一个属性时,编译器创建一个私有的匿名支持字段,该字段只能是通过属性的get和set访问器访问。
http://msdn.microsoft.com/en-us/library/bb384054(v=vs.90).aspx