C# 类域成员和属性

  • 域成员是利用具有公共访问性的成员变量来实现的,使用较为简单方便。
  • 属性通过存取标志来访问,隐藏了实现的细节,功能强大。

域成员

C# 成员变量可以可以在声明时直接赋值。

class CFoo
{
    public int v = 3; //成员变量
}

public 不能少,用来表示存取权限,更多知识请参见不要 const,用 readonly?和C# 可访问性级别。


属性

在 C# 中,属性赋值关键字是 set,返回属性值关键字是 get,与其它语言可能不同。

class CSquare
{
    private int pvtWidth = 0;
   
    public int Width
    {
        set
        {
            pvtWidth = value; //属性赋值
        }
        get
        {
            return pvtWidth; //返回属性值
        }
    }
}

一个 private 变量用于存储属性值,与外界打交道的是 Width(我们将其首字母大写),属性通过 get、set、value 关键字实现功能,以上示例使用属性跟使用域成员是一样的,还没有体现出属性的优点。

优点一:

class CSquare
{
    private int pvtWidth = 0;
   
    public int Width
    {
        get
        {
            return pvtWidth;
        }
    }
}

上述示例中,如果我们试图给 Width 赋值,便会出现错误,因为没有实现 set,这就成了只读属性,同样,我们只实现 let 就成了只写属性。

优点二:

class CSquare
{
    private int pvtWidth = 0;
   
    public int Width
    {
        set
        {
            pvtWidth = (value>=0)?value:0;
        }
        get
        {
            return pvtWidth;
        }
    }
}

可以看出,我们在为 Width 赋值时,如果该值小于 0,则自动以 0 代替。关于条件运算符,请参见C# 语句-条件语句-条件运算符。

你可能感兴趣的