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