C#私有财产-它们是否被使用/有意义?

C#私有财产-它们是否被使用/有意义?,c#,properties,private,C#,Properties,Private,我一开始是一个C#爱好者,在我看来,房产应该永远是公共的。私有财产毫无意义。会吗 请问: private string propertyOne {get; set;} 相当于: public string propertyOne {private get; private set;} 使用属性的想法是封装而不是仅仅向“外部世界”呈现原始变量。这样,您也可以在访问器中有一个额外的逻辑 因此,不,纯粹的私有财产不会是常见的用例 但是,公共属性使用私有setter并不少见。在您的问题中,是的,后者

我一开始是一个C#爱好者,在我看来,房产应该永远是公共的。私有财产毫无意义。会吗

请问:

private string propertyOne {get; set;}
相当于:

public string propertyOne {private get; private set;}

使用属性的想法是封装而不是仅仅向“外部世界”呈现原始变量。这样,您也可以在访问器中有一个额外的逻辑

因此,不,纯粹的私有财产不会是常见的用例


但是,公共属性使用私有setter并不少见。

在您的问题中,是的,后者在功能上与前者相同,但将其作为私有setter来实现是没有意义的

我倾向于使用

public string propertyOne {get; private  set;}
有时我希望它公开,但只有它所在的类才能设置值。但是,当您想将其他逻辑封装到getter和setter中以执行其他功能时,通常也是这样


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

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


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

是的,这两位代码是等价的。我从未使用自动getter/setter创建过私有属性。似乎没什么用。我在getter的实际实现中使用了私有属性。私有get方法(或属性getter)可能很有用。

是的,它们是等效的。如果您正在编写一个类供其他人使用,那么您的文件中可能有您不希望他们访问的内容。例如,可能有人希望获得利率,但您不希望他们能够更改利率的值。在本例中,您可以执行public double rate{get;private set;}只需注意:库开发人员的.NET设计指南指定属性应为Pascal大小写。最新的链接是。发布的链接来自.NET 1.1。您的示例属性One是可设置的,但只能私人读取。这是你的本意吗?