属性是一种用于访问对象或类的特性的成员,可以表示对象的某一组成部分或者特性。
属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。
可以像使用公共数据成员一样使用属性,但实际上他们是称为"访问器"的一种特殊方法。
这使得数据在被轻松访问的同时,仍然能提供方法的安全性和灵活性。
属性不能作为ref参数或out参数传递.
属性具有以下特点:
- 属性可以向程序添加元数据。元数据是嵌入程序中的信息,如编译器指令或数据描述.
- 程序可以使用反射检查自己的元数据
- 通常使用属性与COM交互.
属性以两种形式存在,一:是在公共语言运行库的基类库中定义的属性。另一种是自己创建,可以向代码中添加附加信息的自定义属性。
Serialzable为.Net Framework类库中定义的属性.
自定义属性在类中是是通过以下方式声明的 : 指定属性的访问级别 , 后面是属性的类型,接下来是属性的名称,然后是声明get访问器和set访问器的代码模块.
访问修饰符 数据类型 属性名
{
get
{
return 变量名;
}
set
{
变量名 = value;
}
}
访问修饰符用来确定属性的可用范围,
- public : 不限制对该属性的访问.
- protected : 只能从其所在类和所在类的子类(派生类)进行访问.
- intrenal : 只有其所在类才能访问.
- private : 私有访问修饰符,只能在其声明类中使用.
get访问器与方法体相似,它必须返回属性类型的值.而set访问器类似于返回类型为void的方法,它使用称为value的隐式参数,此参数的类型是属性的类型.
- 属性的使用为对象名.属性名
- 如果要在其他类中调用自定义属性.必须将自定义的访问级别设置为public.
- 如果属性为只读属性,不能在调用时为其赋值,否则产生异常。