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用法的簡單介紹。