C#定义属性及其关键字get,set,value

  • Visual Studio 2010
  • Visual Studio 2008
  • Visual Studio 2005
C#定义属性:
属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个用于设置属性的值。这两个块也称为访问器,分别用get和set关键字来定义。可以忽略get块创建只写属性,忽略set创建只读属性。
public int MyIntProp
{
   get
  {
      //Property get code
   }
   set
  {
      //Property set code
   }
}
第一行非常类似字段的定义,但是行末没有分号,包含一个嵌套的get和set块。

上下文关键字 value 用在普通属性声明的 set 访问器中。此关键字类似于方法的输入参数。关键字 value 引用客户端代码尝试赋给属性的值。

下面举一个复杂点的例子:(截自msdn)
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";
            }
        }
    }

}
MyBaseClass类中定义了一个虚拟的自动属性,MyDerivedClass类中对 Name 属性进行重载,该属性使用 value 参数向支持字段 name 分配新字符串。从客户端代码的角度来看,该操作写作一个简单的赋值语句。

你可能感兴趣的:(C#)