1

我只是想检查我是否理解正确。get 中的返回值使返回值等于私有实例数据。并且设置值使公共值的值等于私有实例的值。我理解正确吗?

4

2 回答 2

5

不总是。

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.  
于 2012-07-03T04:43:17.250 回答
4

如果你是财产被定义为:

    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 是验证某个条件的值,然后适当地设置它。

于 2012-07-03T04:42:50.387 回答