2

当我有自动属性并尝试从它的类中访问它时,这似乎是一种开销,因为我使用一个函数来访问我的类的成员,而不是直接访问它。

如果这是正确的,也许我应该考虑在这种情况下不使用自动属性?

4

4 回答 4

5

您是否测量过任何理论开销并发现它很重要?这是做出基于绩效的决策的关键。

在这种情况下,我完全希望 JIT 能够内联自动实现的属性,从而消除任何性能开销。(我似乎记得看到过float/不是double这种情况的情况,但那是不久前的事了——即使这样,开销也很小。)

于 2011-12-20T16:08:07.303 回答
3

在这方面,自动属性与普通属性没有什么不同。

别担心;JITter 通常会内联属性方法。

于 2011-12-20T16:08:22.133 回答
2

你是对的。但是,某些机制需要属性,例如 XML 序列化程序不会序列化公共成员......

另一件事是封装——你永远不会事先知道你的类的每个属性的最终目的地是什么,所以如果你首先将它创建为属性,你可以稍后进入 set/get 实现。

于 2011-12-20T16:07:57.493 回答
0

如果您遵循面向对象的原则,您将违反封装原则,允许直接访问您的内部成员。属性机制(getter 和 setter 方法)提供对这些成员的正确访问,保护内部成员不被直接访问。

于 2011-12-20T16:09:17.260 回答