12

这里的value关键字是什么,它是如何将值分配给的_num?我很困惑,请给出以下代码的描述。

    private int _num;
    public int num
    { 
        get 
        {
            return _num;
        }
        set 
        {
            _num=value;
        }
    }

    public void button1_click(object sender,EventArgs e)
    {
        num = numericupdown.Value;
    }
4

3 回答 3

20

在属性设置器的上下文中,value关键字表示分配给属性的值。它实际上是访问器的一个隐式参数set,就好像它是这样声明的:

private int _num
public int num
{ 
    get 
    {
        return _num;
    }
    set(int value)
    {
        _num=value;
    }
}

属性访问器实际上是等价于这些方法:

public int get_num()
{
    return _num;
}

public void set_num(int value)
{
    _num = value;
}
于 2012-08-18T14:52:28.440 回答
8

value 关键字上下文关键字,即根据其上下文具有不同的含义。

在一个set块中,它仅仅意味着程序员设置它的值。例如,

className.num = 5;

在这种情况下,value将等于 5内部的setblock。所以你可以写:

set
{
    int temp = value; //temp = 5
    if (temp == 5) //true
    {
        //do stuff
    }
    _num = value;
}

set块之外,您可以将value其用作变量标识符,如下所示:

int value = 5;

请注意,您不能set在块内执行此操作。

旁注:您应该将属性大写numNum; 这是一个常见的约定,它使正在阅读您的课程的人更容易识别公共和私有属性。

于 2012-08-18T14:54:10.023 回答
2

Properties是您可以读取、写入或计算 aprivate field或的值的方式class variable。当代码将值分配给 or (class) 时,使用 aset内的setteror 。关键字的意思只是“被分配的东西”。propertyprivate fieldvariablevalue

    public class StaffMember 
    { 
        private int ageValue; 
        public int Age 
            { 
                 set 
                     { 
                         if ( (value > 0) && (value < 120) ) 
                             { this.ageValue = value; } 
                     } 
                 get { 
                      return this.ageValue; 
                     } 
            } 
    }
//Rob Miles - C# Programming Yellow Book
于 2018-02-06T13:46:57.590 回答