我不明白是否需要拥有以C#2开头的私人制定者.
为我设置一个setter方法是让用户在该类中设置一些变量.在这样做时,我们不会将变量直接暴露给用户.相反,我们让他们通过这种公共setter方法来做到这一点.
这对我来说是使用"封装".有一些争论声称私人制定者会允许你应用封装.
我是不是通过使用公共setter方法使用封装?为什么我们需要私人制定者?
不可变类和具有私有setter的类有什么区别?
在我看过的大部分代码中(在SO上,我都会在我自己的代码中使用codeproject.com),我已经看到为一个类包含的每个私有字段创建公共属性,即使它们是最多的基本类型get; set;:
private int myInt;
public int MyInt
{
get { return myInt; }
set { myInt = value }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:这与以下方面有何不同:
public int MyInt;
Run Code Online (Sandbox Code Playgroud)
如果我们应该使用属性而不是公共字段,为什么我们应该在这种特定情况下使用它们呢?(我不是在讨论更复杂的例子,其中getter和setter实际上做了一些特殊的事情,或者只有一个get或set(只读/写)而不是只返回/设置私有字段的值).它似乎没有添加任何额外的封装,只在IntelliSense中提供一个漂亮的图标,并放在类图中的特殊部分!