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

C#--属性三两事
在介绍属性之前,我想问问各位有经验的大牛,属性的作用这么多,被外部访问的字段是不是都需要将它设为属性?


C#中的属性,体现了C#作为面向对象语言的封装性。它避免了外部类字段的直接访问、使得代码的安全性得到了加强。

属性与字段的区别:
     属性是逻辑字段;属性是字段的扩展,源于字段;
     属性并不占用实际的内存,字段占内存位置及空间。
     属性可以被其它类访问,而大部分字段不能直接访问。
     属性可以对接收的数据范围作限定,而字段不能。
     
最直接的说:属性是被“外部使用”,字段是被“内部使用”。

下面来看看,属性这种看起来麻烦的东西,到底能够带来什么样的好处:     

1、可以提供get-only或者set-only版本,甚至可以给读、写以不同的访问权限(C# 2.0支持)

2、可以对赋值做校验、或者额外的处理

3、可以做线程同步

4、可以将属性置于interface中

5、可以使用虚属性、或者抽象属性



下面来看最简单的例子:
class Person
    {
        private string sex;

        public string Sex
        {
            get { return sex; }
            set { sex = value; }
        }

    }