.net框架筆記——屬性

iDotNetSpace發表於2008-09-27

一.無參屬性

通常被稱為屬性.

物件導向設計和程式設計的其中一個原則是資料封裝.

 

.net框架筆記——屬性
<!--

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

--&gt 1public class Employee
 2.net框架筆記——屬性    {
 3       private string _name;
 4       private int _age;
 5
 6       public string Name
 7.net框架筆記——屬性       {
 8           get
 9.net框架筆記——屬性           {
10               return _name;
11           }

12           set
13.net框架筆記——屬性           {
14               this._name = value;
15           }

16       }

17       public int Age
18.net框架筆記——屬性       {
19           get
20.net框架筆記——屬性           {
21               return _age;
22           }

23           set
24.net框架筆記——屬性           {
25               if (value < 0)
26.net框架筆記——屬性               {
27                   throw new ArgumentOutOfRangeException("年齡不可能為負數");
28               }

29               else
30                   this._age = value;
31           }

32       }

33       
34    }

如果不封裝,比如上面的年齡:就會有如下程式碼:

 

 

.net框架筆記——屬性
<!--

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

--&gt 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部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-465883/,如需轉載,請註明出處,否則將追究法律責任。

相關文章