在大多数情况下,我们通常会创建一个私有变量及其相应的公共属性,并使用它们来执行我们的功能。
每个人都有不同的方法,就像有些人在每个地方都使用属性,有些人在同一个类中使用私有变量,因为它们是私有的,并通过使用属性打开它以供外部环境使用。
假设我在场景中说插入数据库。 我创建了一些需要初始化的参数。
我创建了10个私有变量及其对应的公共属性 以
的形式给出private string name;
public string Name
{
get{return name;}
set{name=value;}
}
等等。在上面提到的这些情况下,应该使用内部变量或属性。
在那些情况下
public string Name
{
get{return name;}
set{name=value>5?5:0;} //or any action can be done. this is just an eg.
}
在这种情况下应该做些什么。
结论是什么
我其实是想问这个。 我们是否应该在该类中使用变量,或者我们是否应该在同一类中使用属性。
答案 0 :(得分:4)
如果使用auto-implemented properties,则该字段将被隐藏,因此您将被迫使用该属性,即使在定义属性的类中也是如此。自动实现的属性是个好主意,除非您需要向getter / setter添加一些逻辑。
答案 1 :(得分:1)
如果私有变量的唯一用途是作为存储容器,您可以使用:
public string Name {get; set;}
恕我直言,不应该公开变量 - 总是使用属性,以便稍后在whitout更改界面时添加约束或更改行为。
答案 2 :(得分:1)
让事情更具可读性:
答案 3 :(得分:0)
我从不暴露公共变量。为什么?因为我不能对它们施加约束,而我可以在使用属性时。如果它符合我的约束(例如电子邮件地址),我可以先检查它,然后保存它。否则我会抛出异常。
答案 4 :(得分:0)
你绝不应该在没有充分理由的情况下暴露公共变量。很难说永远不会,因为如果你试图与通信类型组件互操作,你可能也需要它。
公开曝光的任何内容都应该是属性。那是为什么?
原因是如果您需要更改值的来源,或添加一些业务逻辑检查它是否是公共成员,您将需要使用代码进行更改的任何内容。如果它是属性,您可以更改内部逻辑,而不需要任何人使用它来更改代码。
我个人使用属性,只创建成员变量,当我希望属性不仅仅是获取或设置时(因为这对于带有快捷方式属性的C#3.0来说很容易)。
如果我想保护某个地产不被公开曝光,我会把它作为私人财产,并且只有在我拥有时才曝光。
答案 5 :(得分:0)
我们在某些情况下需要显式私有变量,例如set之前的验证。有时我们还需要转换输入,例如,格式化输入。