raindust

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

[注]转载于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();

//...
System.Console.Write(p1.Name);  // the get accessor is invoked here

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
posted on 2007-08-13 20:18  ymz  阅读(257)  评论(0编辑  收藏  举报