【发布时间】:2012-07-03 04:38:58
【问题描述】:
我只是想检查一下我是否理解正确。 get 中的返回值使返回值等于私有实例数据。并且设置值使公共值的值等于私有实例的值。我理解正确吗?
【问题讨论】:
-
我认为这将是 ACTUAL 行。 设置值使私有实例的值等于公共值的值 例如:set{this.var1 = value;}
-
我想我是在专门讨论属性。感谢大家的帮助
我只是想检查一下我是否理解正确。 get 中的返回值使返回值等于私有实例数据。并且设置值使公共值的值等于私有实例的值。我理解正确吗?
【问题讨论】:
并非总是如此。
Get 返回开发人员认为属性的值应该是什么,set 更改开发人员认为适合存储数据的任何内容。属性和内部字段之间通常存在一对一的映射,但并非总是如此。
int UltimateAnswer {get {return 42;}} // no internal field at all
int Direct
{
get {return _direct;}
set {_direct = value;}
}
int WithConversion
{
get {return _stored * 100;}
set { _stored = value / 100;}
}
int AutoFiled {get;set;} // this one directly maps to automatically created field.
【讨论】:
如果你是财产被定义为:
private int _value;
public int Value
{
get { return _value; }
set { _value = value; }
}
然后是的,get 正在返回私有字段 _value 的值,而 set 正在设置 _value,但它也可能不同。
public int Value
{
get { return getCalculatedValue() }
set {
if (_value > 0)
{
_value = value;
}
else
{
_value = -1;
}
}
}
在上面的例子中,get 是从某个名为getCalculatedValue() 的函数返回给你计算的值,set 是验证某个条件的值,然后适当地设置它。
【讨论】: