C# 属性(property)

一、属性的概念

        属性提供功能强大的方法以将声明信息与C#代码(类型、方法、属性等)相关联,一旦属性与程序实体关联,即可使用名为反射的技术对属性进行查询。

        属性是一种用于访问对象或类的特性的成员,它可以表示字体的大小、窗体的标题和客户的名称等内容。

        属性有访问器,这些访问器指定在它们的值被读取或写入时需要执行的语句。因此属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的一种特殊方法,这使得数据在被轻松访问的同时,仍能提供方法的安全性和灵活性。

       类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。

        属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的 访问器(accessors)。


二、属性的特点

1.属性可向程序中添加元数据。元数据是嵌入程序中的信息,如编译器指令或数据描述。

2.程序可以使用反射检查自己的元数据。

3.通常使用属性与COM交互。

三、访问器(Accessors)

属性的定义和字段类似,可以说是字段的自然延伸。属性定义包含 get 和 set 访问器的声明,其中 set 访问器可分配数据成员,get 访问器检索数据成员值。

        public string name;

        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }

四、属性的使用

如下所示,设置时进入Set访问器,读取时进入Get访问器。

class Program
    {
        static void Main(string[] args)
        {
            UseProperty up = new UseProperty();
            up.Name = "张三";
            Console.WriteLine(up.Name);
        }
    }

    class UseProperty
    {
        public string name;

        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
    }

运行结果如下:

五、抽象属性(Abstract Properties)

抽象类可拥有抽象属性,这些属性应在派生类中被实现。

    class Program
    {
        static void Main(string[] args)
        {
            UseProperty2 up = new UseProperty2();
            up.Name = "张三";
            Console.WriteLine(up.Name);
        }
    }

    abstract class UseProperty1
    {
        public abstract string Name
        {
            get;
            set;
        }
    }

    class UseProperty2 : UseProperty1
    {
        public string name = "";

        public override string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
    }

运行结果如下:

六、属性的作用

1.主要作用:将读,写权限分开。get和set是分别实现的,成员变量的读写直接由自己的修饰符决定。

2.更好的安全性:可以在set中通过条件判断来限制非法值等。

3.更高的灵活性:给属性赋值或取值时,可以根据自己的表达式来实现各种不同逻辑。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值