[注]转载于http://hi.baidu.com/x8online/blog/item/61839dd494e81701a08bb781.html |
一。C#中属性概念: 对于对象的用户,属性显示为字段,访问该属性需要完全相同的语法。对于类的实现者,属性是一个或两个代码块,表示一个 get 访问器和/或一个 set 访问器。当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行 set 访问器的代码块。不具有 set 访问器的属性被视为只读属性。不具有 get 访问器的属性被视为只写属性。同时具有这两个访问器的属性是读写属性。 与字段不同,属性不作为变量类分类,所以不能将属性作为 ref参数和 OUT参数传递。 二。属性在类模块内的声明语法: 字段访问级别。属性的类型。属性的名称 { get {} set {} } get 访问器:get 访问器体与方法相似,必须返回属性类型的值,执行get访问器相当于读取字段的值。当引用属性时,除非该属性为赋值目标,否则将调用 get 访问器以读取该属性的值 class Person { private string name; // the name field public string Name // the Name property { get { return name; } } } Person p1 = new Person(); //... get访问器必须以return或throw语句终止。并且控制权不能离开访问器体
set访问器体: 类似于返回类型void的方法。使用VALUE的隐式参数,此参数的类型是该属性的类型。如:
class Person { private string name; // the name field public string Name // the Name property { get { return name; } set { name = value; } } } set 访问器中,对局部变量声明使用隐式参数名称 value 是错误的。 三。说明
1.属性可被标记为public,private,protected,internal,或protected internal 2.可以使用static关键字声明静态属性,可以使的调用放随时使用该属性,即不存在类的实例也可以使用属性 3,可以使用vistual关键字把属性声明为虚属性,这样派生类可以使用overrid来重写属性的行为。 4。重写虚属性可以是sealed的,表示他对派生类不再是虚拟的。属性可以声明为abstract,这意味着在类中没有实现,派生类必须编写自己的实现
|
文章来源:http://meymz.blog.163.com/blog/static/3812092120076271075410