自动属性与通常声明的属性之间的性能差异。对或错?

时间:2012-07-13 13:52:09

标签: c# .net visual-studio-2010 clr clr4.0

从性能的角度来看,自动实现的属性与手动实现的属性之间是否有任何区别?

3 个答案:

答案 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