日期:2014-05-17  浏览次数:20749 次

C#属性总结
1.私有字段和公有字段的比较

类中的私有字段只能在类的内部访问,而对类的公有字段的访问却不受限制。

在以前,为了封装,程序中会尽量少使用公有字段,因为使用公有字段的话,会让程序失去控制权。所以程序中会大量使用私有字段。不过,使用私有字段时,需要程序为私有字段定义额外的取值方法和赋值方法。

下面的示例代码定义了一个私有字段age来表示年龄,同时定义了取值方法GetAge()及赋值方法SetAge()供外部来调用,通过这两个方法,外部的对象就可以来访问私有变量age了。

private int age;
public void SetAge(int age)
{
      this.age = age;
}
public int GetAge()
{
       return this.age;
}

使用这种方法时,在SetAge()方法和GetAge()方法中可以增加相应的控制代码来防止外部对age的非法访问。如使用下面的代码就可以避免将一个负数赋值给age,因为一个人的年龄不可能小于0。

public void SetAge(int age)
{
     if (age > 0)
     {    
          this.age = age;
     }
}

不过这种方法比起使用公有字段,略显麻烦。

要是使用公有字段的话,则只需使用下面的定义代码(就短短一行哦,不过安全性就不要再想了):

public int Age;

这样,在类的外部就可以使用下面的代码来访问这个公有字段了:

x.Age = 10;//x为模拟类实体

而在类的外部,私有字段的访问就必须通过赋值方法和取值方法来完成了。

x.SetAge(10); //x为模拟类实体

虽然访问私有字段与公有字段都是短短一行代码,但是访问私有字段却要通过一个方法,感觉还是什么了点(至于是什么,天知道),呵呵。       

下面简单总结一下:

使用“私有字段+赋值方法+取值方法”的方式略显麻烦但是可以保证字段的安全性。

而使用公有字段方式简单但是却无法保证字段的安全性。

很显然,安全性肯定要比简单性对程序影响深远。这也就是以前很少使用公有字段的原因了。

难道我们就不能同时兼顾公有字段的简单性和私有字段的安全性吗。

答案是有的,属性满足我们的要求。

2.属性

在介绍属性前,先给出表示年龄的属性代码,如下:
private int age;
public int Age 
{ 
    get
    {
        return this.age;
    } 
    set
    {
        if (value > 0)
        {
            this.age = value;
        }
    }
}

属性的访问代码如下:

x.Age = 10;//x为模拟类实体

是不是很熟悉啊,对的,和公有字段的访问方式一摸一样。

并且,在给属性赋值时,会调用属性的set方法(属性提供的set方法被称为set访问器,get方法被称为get访问器),在set方法中可以增加相应的控制代码来防止外部对私有字段age的非法访问。这与为私有字段添加的SetAge