相关疑难解决方法(0)

只写属性,有什么意义?

我理解为什么要使用以下语法来使用只读属性:

private int _MyInt;
public int MyInt
{
  get { return _MyInt; }
}
Run Code Online (Sandbox Code Playgroud)

这个例子可能不是最好的例子,因为我认为只读属性真的与readonly变量一起发光,但这不是重点.我不明白的是为什么使用以下语法使用只写属性:

private int _MyInt;
public int MyInt
{
  set { _MyInt = value; }
}
Run Code Online (Sandbox Code Playgroud)

这是各种书籍和教程中描述只读属性的方式.如果设置了变量,你会在概念上阅读一些点,至少在内部的类,但该类中甚至在内部读它,你会被accesssing这样做_MyInt,我觉得违反了封装的精神,性质试图强制执行.相反,为什么不只是使用具有不同访问修改的属性的全部功能来访问它:

private int _MyInt;
public int MyInt
{
  set { _MyInt = value; }
  private get { return _MyInt; }
}
Run Code Online (Sandbox Code Playgroud)

当然可以写出来

public int MyInt { set; private get; }
Run Code Online (Sandbox Code Playgroud)

您仍然可以获得封装,但是限制其他类访问,因此它仍然只能写入外部类.

除非有一种情况,你真诚地希望分配给一个变量,但从未实际访问它,在这种情况下,我肯定会对何时出现这种需求感到好奇.

c# properties

53
推荐指数
4
解决办法
3万
查看次数

标签 统计

c# ×1

properties ×1