如果有属性,是否有私有变量的使用? 此外,还有私人财产这样的东西吗?
今天我正在处理一个程序时出现了这个问题。我意识到必须将我的所有属性声明为公共属性。然后我意识到我没有太多的私人成员了。对不起,这个问题很愚蠢,我来自纯粹的C ++背景。
答案 0 :(得分:2)
是的,是的。大多数房产,包括公共房产都由私人土地支持。这是必要的,因为属性只是getter和/或setter方法,你仍然需要一个物理位置来存储它们。
例如,一个自动实现的属性,如下所示:
public int MyValue { get; set; }
编译为:
private int _myValue;
public int MyValue {
get { return this._myValue; }
set { this._myValue = value; }
}
请注意,该属性仍需要一个实际字段来存储其值。
现在关于私有财产,是的,这仍然有用。最常见的情况是,您希望封装一些简单的逻辑,但不希望在方法中执行此操作。例如:
private MyObject _myObject;
private MyObject MyObject {
get {
if (this._myObject == null)
this._myObject = new MyObject();
return this._myObject;
}
}
现在,在代码的其他地方,您可以简单地引用this.MyObject
,而无需每次都进行空检查。
在某些涉及序列化的情况下,或者在某些事物可能反映在您的类型的私有成员上的任何其他情况下,它也很有用。在这些情况下,拥有一个实际的财产是有用的,即使它从未公开过。