C#私有属性 - 他们使用/有意义吗?

时间:2011-11-29 00:19:43

标签: c# properties private

我最初是一名C#爱好者,在我看来,属性应该始终是公开的。私有财产没有意义。会吗?

会这样:

private string propertyOne {get; set;}

等同于:

public string propertyOne {private get; private set;}

4 个答案:

答案 0 :(得分:11)

是的,私有属性可能有意义,特别是在你想要在getter / setter中实现逻辑的情况下。您可能只希望在类中访问它们(因此它们是私有的),但您仍然希望将getter / setter逻辑封装在一个地方。

您打印的两行代码之间存在差异。反映公共财产的人不会看到第一个,但他们会看到第二个,即使他们不能调用getter / setter。

答案 1 :(得分:4)

使用Property的想法是封装而不是仅仅将原始变量呈现给“外部世界”。这样你就可以在你的访问器中有一个额外的逻辑。

所以不,纯粹的私有财产不是通常的用例。

但是,通过私有设置器查看公共属性的情况并不少见。

答案 2 :(得分:0)

在你的问题中,是的,后者在功能上与前者相同,但实现它是没有意义的。

我倾向于使用

public string propertyOne {get; private  set;}

有时我希望它是公开可用的,但只有它能够设置值的类。但主要是当你想要将其他逻辑封装到getter中时,还要设置setter以执行其他功能。

但它们通常是公共属性,用于封装其他功能。

答案 3 :(得分:0)

是的,这两位代码是等价的。我从来没有用自动getter / setter创建一个私有属性。似乎没有用。我使用私有属性和getter的实际实现。私有get方法(或属性getter)可能很有用。