当我有自动属性并尝试从它的类中访问它时,这似乎是一种开销,因为我使用一个函数来访问我的类的成员,而不是直接访问它。
如果这是正确的,也许我应该考虑在这种情况下不使用自动属性?
当我有自动属性并尝试从它的类中访问它时,这似乎是一种开销,因为我使用一个函数来访问我的类的成员,而不是直接访问它。
如果这是正确的,也许我应该考虑在这种情况下不使用自动属性?
您是否测量过任何理论开销并发现它很重要?这是做出基于绩效的决策的关键。
在这种情况下,我完全希望 JIT 能够内联自动实现的属性,从而消除任何性能开销。(我似乎记得看到过float
/不是double
这种情况的情况,但那是不久前的事了——即使这样,开销也很小。)
在这方面,自动属性与普通属性没有什么不同。
别担心;JITter 通常会内联属性方法。
你是对的。但是,某些机制需要属性,例如 XML 序列化程序不会序列化公共成员......
另一件事是封装——你永远不会事先知道你的类的每个属性的最终目的地是什么,所以如果你首先将它创建为属性,你可以稍后进入 set/get 实现。
如果您遵循面向对象的原则,您将违反封装原则,允许直接访问您的内部成员。属性机制(getter 和 setter 方法)提供对这些成员的正确访问,保护内部成员不被直接访问。