2014-01-09 32 views
1

当你声明一个像这样的成员变量:public bool name { get; set; }访问它时总会有性能问题,对吧?自动属性会影响运行时性能吗?

我看到这种模式很多,想象一些更高性能的应用程序中可以添加频繁访问属性。我是否正确,或者.NET在幕后做了些什么?

+2

没有。没有区别。编译器在使用简写时会生成一个备份变量。 –

+0

这只是一个语法糖 –

+0

我相信使用这种风格实际上会创建一个Property而不是一个成员变量。它只在有限的几种情况下很重要。 – RacerNerd

回答

12

自动属性解析成后台字段加上不重要的访问器主体。如果开启优化,JIT将可靠地内联。性能与一个领域相同。

只需使用自动属性而不后悔。 Visual Studio有一个prop模板。输入prop<tab><tab>即可获得。 propg适用于私人setter,这对于快速消除不可变类型非常有用。

+5

我在最近的一篇文章中证实了这一点。生成的(我的机器上的64位JITer代码)代码实际上是内联的,并直接访问后台字段。 +1。 –

+0

“道具”模板并非Resharper专有。它在VS(2010)中默认可用。如果你想立即使用'private set',请使用'propg'。 – Styxxy