我最初是一名C#爱好者,在我看来,属性应该始终是公开的。私有财产没有意义。会吗?
会这样:
private string propertyOne {get; set;}
等同于:
public string propertyOne {private get; private set;}
答案 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)可能很有用。