黑马程序员技术交流社区

标题: get和set的之都只写属性那个value做啥的 [打印本页]

作者: 闫豪    时间: 2012-4-12 21:18
标题: get和set的之都只写属性那个value做啥的
本帖最后由 闫豪 于 2012-4-12 21:19 编辑

get访问器不带参数,且必须返回属性生命的类型。set也不应指定任何显示参数,但编译器假定他带一个参数,其类型也与属性相同,并且表示为value。我不明白value到底干嘛的,get,set的实际用法不清楚
作者: 谢栋文    时间: 2012-4-12 21:44
如 public int x
{
get {return in;}
set {in=value;}
}

当有语句如:x=36;
value值就为36,通过set将value赋值给in,get的作用即:将in的值返回给属性x。
作者: 天高地阔    时间: 2012-4-12 22:14
首先,为什么要使用属性呢,是为了保护拥有这个属性的变量,
如下面这里:
public int age;
public int  Age
{
  get{return age;}//用户对Age取值时调用get方法
  set{value中存储赋的值}//用户对Age赋值时调用set方法
}
如果有一个  Zs.Age=22;
value的作用就是存储用户赋过来的这个22,
作者: 谢栋文    时间: 2012-4-12 22:23
哥们 你set{value中存储赋的值}  应该是set{this.age=value;}吧?
作者: 徐瑞    时间: 2012-4-12 23:09
set的那个value是内置的一个变量,指的就是外界传入的值
作者: ★心秒★    时间: 2012-4-13 09:07
Visual Studio 2010 - Visual C#
value(C# 参考)
上下文关键字 value 用在普通属性声明的 set 访问器中。 此关键字类似于方法的输入参数。 关键字 value 引用客户端代码尝试赋给属性的值。 在下面的示例中,
MyDerivedClass
有一个名为
Name
的属性,该属性使用 value 参数向支持字段
name
分配新字符串。 从客户端代码的角度来看,该操作写作一个简单的赋值语句。


class MyBaseClass
{
    // virtual auto-implemented property. Overrides can only
    // provide specialized behavior if they implement get and set accessors.
    public virtual string Name { get; set; }

    // ordinary virtual property with backing field
    private int num;
    public virtual int Number
    {
        get { return num; }
        set { num = value; }
    }
}


class MyDerivedClass : MyBaseClass
{
    private string name;

   // Override auto-implemented property with ordinary property
   // to provide specialized accessor behavior.
    public override string Name
    {
        get
        {
            return name;
        }
        set
        {
            if (value != String.Empty)
            {
                name = value;
            }
            else
            {
                name = "Unknown";
            }
        }
    }

}


这是我网上找的,应该可以解释清楚了……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2