ITPub博客

首页 > Linux操作系统 > Linux操作系统 > .net框架笔记——属性

.net框架笔记——属性

原创 Linux操作系统 作者:iDotNetSpace 时间:2008-09-27 13:24:41 0 删除 编辑

一.无参属性

通常被称为属性.

面向对象设计和编程的其中一个原则是数据封装.

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1public class Employee
 2    {
 3       private string _name;
 4       private int _age;
 5
 6       public string Name
 7       {
 8           get
 9           {
10               return _name;
11           }

12           set
13           {
14               this._name = value;
15           }

16       }

17       public int Age
18       {
19           get
20           {
21               return _age;
22           }

23           set
24           {
25               if (value < 0)
26               {
27                   throw new ArgumentOutOfRangeException("年龄不可能为负数");
28               }

29               else
30                   this._age = value;
31           }

32       }

33       
34    }

如果不封装,比如上面的年龄:就会有如下代码:

 

 


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> public int height;//体重
static void Main(string[] args)
        {
            Employee employee 
= new Employee();

            employee.Age 
= 12;
            employee.Name 
= "dreamersjun";
            employee.height 
= -12;//体重不会出现负数

            Console.WriteLine(employee.Age);
            Console.WriteLine(employee.Name);

            
//employee.Age = -1;
          
        }

 

所以尽可能的封装字段.

当定义一个属性时,编译器会在生成的托管模块中产生以下3项:

1.一个表示属性的get访问器的方法.只有在为属性定义了get访问器方法时,才有这一项.

2.一个表示属性的set访问器的方法,只有在为属性定义了set访问器方法时,才有这一项.

3.一个位于托管模块元数据中的属性定义,不管是只读,只写,或者是读写属性都有这一项.

属性限制:

第一:属性不定义存储位置,所以不能以ref或out参数的形式传递给方法.

第二:属性不能重载.

第三:当调用get访问器时,属性不应该再改变存储变量的状态.

二:含参属性

在C#中称为索引器.通过索引器访问的每个元素都应该和索引器的基类型一致.参数index不必须是int类型,但因为索引器通常用于数组索引,所以index通常为int.

set访问器能接收隐含参数value,该参数包含赋给指定下标的元素的值.

使用索引器有两个限制.第一,因为索引器没有定义存储位置,所以索引器产生的值不能作为 ref参数或out参数传递给方法.第二:索引器必须是类的实例成员,不能被声明为static类型.

三:对访问器使用访问限定符

第一:只能改变set或get访问器之一的访问限定符,而不能是两者.

第二:访问限定符必须比属性或索引器的访问限制更严格.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-465883/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: c#的装箱和拆箱
请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766066