从性能的角度来看,自动实现的属性与手动实现的属性之间是否有任何区别?
答案 0 :(得分:7)
因为我们知道它们是在运行时创建的
自动属性不是在运行时创建的,它们是在编译时生成的。非常像using
,它们是有用的语法糖,可以减少你需要做的打字量。它们只是简单地翻译成你手动编写的代码。
没有性能差异。除了支持字段名称之外,生成的代码与手动执行的代码相同。
正如@dasblinkenlight强调的那样,作为“安全名称”的支持名称(如在C#中永远无法创建它)会导致无法正确处理名称的序列化问题。
答案 1 :(得分:2)
没有区别。自动属性在编译时转换为普通属性。所以这个:
public int Prop { get; set; }
与此相当:
private int _PropField;
public int Prop {
get { return _PropField; }
set { _PropField = value; }
}
答案 2 :(得分:1)
自动属性是语法糖意味着它们是写属性的简写
取自MSDN:
在C#3.0及更高版本中,自动实现的属性生成 当不需要额外的逻辑时,属性声明更简洁 在物业访问者。它们还使客户端代码能够创建 对象声明属性时,如以下示例所示, 编译器只能创建一个私有的匿名支持字段 通过属性的get和set访问器访问。
http://msdn.microsoft.com/en-us/library/bb384054(v=vs.90).aspx