内部使用属性有什么好处?

当从类外部访问成员时,封装显然是有用且必不可少的,但是当在内部引用类变量时,调用其私有成员或使用其getter更好吗? 如果你的getter只是返回变量, 那么性能是否存在差异

应该没有显着的性能差异,并且您坚持使用属性的原因是因为这是封装的全部要点。 它使这些私有成员的所有访问保持一致和受控。 因此,如果您想要更改属性getter / setter,您不必考虑“我是否需要在我决定直接访问私有成员的地方复制相同的function?”

直接访问字段或使用getter通常不会产生很大的不同,除非你的getter执行一些延迟初始化或其他处理。 所以它取决于getter的function,但我的经验法则是在特定情况下始终使用getter。

要为字段分配值,请不要忘记setter通常包含validation代码或引发事件。 在这种情况下,您应该始终使用setter。

好处是在Get或Set上进行validation的情况下。 这将在一个地方,并始终被称为。

据我所知(从Stack Overflow上提出的其他问题),当Getter简单地返回值时,生成的代码与直接访问变量的代码相同。

在大约98%的时间内,性能差异是可以忽略的。

您应该始终使用属性,即使您的getter或setter只是获取或设置您的私有成员。 这将允许您随着应用程序的发展而进行更改。 这样做,您将能够在您的属性中带来一些限制或一些其他封装,而不会破坏您的代码。 否则,一旦您决定根据原因X编写属性,您将发现自己有义务重构所有代码以获取或设置属性而不是您的私有成员。

我喜欢使用内部属性进行延迟初始化,在属性中确保对象已初始化。 这可以确保我没有使用尚未初始化的类级别变量。

TestClass1 _class1 internal TestClass1 { get { if (_class == null) _class = new TestClass1() return _class1 } }