C#中get 和 set 的用法

來源:互聯網
上載者:User

C# get set用法很簡單的,但是必須要很好掌握基礎的認識,才能更好的理解C# get set用法。

C# get set用法中,get是讀取屬性時進行的操作,set是設定屬性時進行的操作。定義一個屬性如果只有get,這個屬性就是唯讀。同樣,只有set,屬性就是唯寫的,當然唯寫的屬性是沒有任務意義的。

假設類是一個銀行,既能存錢也能取錢.

1. private        m_money;  

2. private        class        bank()     

3. {  

4.      get      

5.   {  

6.      return        m_money;               

7.   }  

8.      set     

9.   {  

10.      m_money=value  

11.   }    

12. } 

money就像銀行裡的自動存取款機,你看不見裡面的money,但你能用set(存錢),用get(取錢)。m_money是一個私人欄位,是分裝在類中的,類以外的程式不能直接存取的,C# get set用法中,類的set和get成員是外部程式訪問類內部屬性的唯一方法,就像你去銀行取錢,你不能直接從銀行的保險柜裡拿到錢,而是銀行營業人員把錢取出來給你的。

屬性在調用者看來就像一個普通的變數,普通變數怎麼用,它就怎麼用,但作為類的設計者,你可以利用屬性來隱藏你類中的一些欄位,使外界只能通過屬性來訪問你的欄位,你可以通過屬性來限制外界對你的欄位的存取,就利用get,set,如果你想讓使用者隨意存取你的欄位,那麼就實現set和get,如果只想讓使用者讀取欄位,就只實現get,若只想讓使用者寫欄位就只實現set,同時你還可以在set和get中對使用者傳遞來的值進行一些驗證工作,以確保你的欄位將含有正確的值。

C# get set用法比如

13. private        int        a;  

14. public        int        Index  

15.     {  

16.         get 

17.         {  

18.             return        a;  

19.         }  

20.             set 

21.         {  

22.             if        (value>0)  

23.             a=value;  

24.             else 

25.             a=0;  

26.          }  

27.      }  

可以看出,C# get set用法中有一種函數的特徵。

C# get set用法中一則是隱藏組件或類內部的真實成員,
二是用來建立約束的,比如,實現“有我沒你”這種約束。
三是用來響應屬性變化事件,當屬性變化時做某事,只要寫在SET   方法裡就行了。

有兩種途徑揭示類的命名屬性——通過域成員或者通過屬性。前者是作為具有公用訪問性的成員變數而被實現的;後者並不直接回應儲存位置,只是通過   存取標誌(accessors)被訪問。

當你想讀出或寫入屬性的值時,存取標誌限定了被實現的語句。用於讀出屬性的值的存取標誌記為關鍵字get,而要修改屬性的值的讀寫符標誌記為set。

28. using        System;  

29. public        class        House  

30.  {  

31.     private        int        m_nSqFeet;  

32.     public        int        SquareFeet  

33.     {  

34.       get        

35.      {  return  m_nSqFeet;   }  

36.       set       

37.      {  m_nSqFeet  =  value;   }  

38.     }  

39.   }  

40. class        TestApp  

41.   {  

42.       public   static  void  Main()  

43.        {  

44.       House  myHouse  =   new House();  

45.        myHouse.SquareFeet =   250;  

46.        Console.WriteLine(myHouse.SquareFeet);  

47.        }  

48.   }   

House類有一個命名為SquareFeet的屬性,它可以被讀和寫。實際的值儲存在一個可以從類內部訪問的變數中——如果你想當作一個域成員重寫它,你所要做的就是忽略存取標誌而把變數重新定義為:

49. public        int        SquareFeet; 

對於一個如此簡單的變數,這樣不錯。但是,如果你想要隱藏類內部儲存結構的細節時,就應該採用存取標誌。在這種情況下,set   存取標誌給值參數中的屬性傳遞新值。(可以改名,見第10行。)

除了能夠隱藏實現細節外,你還可自由地限定各種操作:
get和set:允許對屬性進行讀寫訪問。
get        only:只允許讀屬性的值。
set        only:只允許寫屬性的值。
除此之外,你可以獲得實現在set標誌中有效代碼的機會。例如,由於種種原因(或根本沒有原因),你就能夠拒絕一個新值。最好是沒有人告訴你它是一個動態屬性——當你第一次請求它後,它會儲存下來,故要儘可能地延遲資源分派。

以上就是對C# get set用法的簡單介紹。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.