c#中的自动属性不会造成开销

本文关键字:开销 属性 | 更新日期: 2023-09-27 18:18:37

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

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

c#中的自动属性不会造成开销

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

在这种情况下,我完全希望JIT内联自动实现的属性,从而消除任何性能开销。(我似乎记得看到一个float/double的情况下,这个不是的情况,但那是一段时间以前-即使在那时开销是相当小的。)

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

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

你说得对。然而,有些机制需要属性,例如XML序列化器不会序列化公共成员…

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

如果您遵循面向对象原则,则允许直接访问内部成员将违反封装原则。Property机制(getter和setter方法)提供了对这些成员的适当访问,保护内部成员免受直接访问。