C#属性


属性提供灵活的机制来读取、编写或计算私有字段的值。

属性是一种用于访问对象或类的特性的成员。

属性有访问器,这些访问器指定在它们的值被读取或写入时需要执行的语句。

属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。

可以像使用公共数据成员一样使用属性,但实际上属性是称为“访问器”的一种特殊方法,这使得数据在被轻松访问的同时,仍能提供方法的安全性和灵活性。

自定义属性在类中是通过以下方式声明的:指定属性的访问级别、属性类型、属性名称,然后是声明get访问器和(或)set访问器的代码模块,语法格式如下:

访问修饰符 数据类型 属性名

{

    get

    {

        return 变量名;

    }

    set

    {

        变量名=value ;

    }

}

value是隐式参数,此参数类型是属性类型。

程序中调用属性的语法格式如下:

对象名.属性名

虽然属性中有访问器,但是赋值的时候并不直接调用访问器,而是直接调用属性并赋值,就像调用公有字段直接对其赋值似的。


下面的例子能说明属性和字段(数据成员)的区别:

public class Date

{

    private int Day = 7;

    public int day

    {

        get

        {

            return Day;

        }

        set

        {

            if((value>0)&&(value<8))

            {

                Day = value ;

            }

        }

    }

}

类比java,将java中的私有数据成员的get方法和set方法封装,然后给这个封装体起个名字,就和这里的属性差不多了。

当在VS、C#项目中,定义一个私有字段,如:

private int xx ; 

此时按下(alt+enter)组合键,VS会提示:

封装字段:“xx”(并使用属性)

封装字段:“xx”(但仍使用字段)

封装的代码是一样的。

public int xx1{get=>xx ; set=>xx = value ; }

"xx1"是VS自动生成的,以区别"xx"。

如果属性只是对私有字段的封装,是对访问器的封装,那么属性到底是什么?和字段有什么差别?

属性还具有以下特点:

属性可以向程序中添加元数据。

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

通常使用属性与COM交互.


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


属性和反射有关,这可能是属性与字段的重要的区别之一。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值