在早期學習c#的過程中,經常遇到這樣的語句:
public string studentname
get
set
當時也不是很明白為什麼要這樣?學深了c#後,又沒法對其做乙個總結。今天看了《visual c#.net程式設計教程》這本書,總結得不錯,做下筆記:在許多物件導向程式設計語言中,屬性 } }
上面**中定義了乙個屬性studentname,它包含get訪問器和set訪問器。屬性studentname封裝了類student中的字段stuname,字段如果沒有加訪問控制符,被預設為private,外界不能直接訪問它,現在外界可以通過studentnamee屬性自由地訪問 stuname欄位了。
屬性的get和set都是可執行的程式語句組合,具有行為的特點;而使用具有get訪問器和set訪問器的屬性時候就像使用字段一樣,即可以作為左值接受資料,又可以作為右值輸出資料,系統正是按照屬性出現在語句中的位置,自動地選擇是呼叫get還是呼叫set。
屬性的讀寫控制
屬性中的get和set可以只用乙個,如果只有get而沒有set,那麼這個屬性只可讀出,不可寫入;如果只有set而沒有get,那麼這個屬性是只寫入,不可讀出。
在屬性中完成更多功能
既然get和set是程式,那當然可以做更多的事情。乙個合理的分工是:設計字段是為了便於內部方法使用,而盡量與外界隔絕;設計屬性考慮的是方便外界的使用,但是不讓外界知道的資料一律不給。
具體說明:
set訪問器與返回void的方法類似。它使用稱為value的隱式引數,此引數的型別是屬性的型別。在下例中,set訪問器被新增到name
屬性:
public string name當對屬性賦值時,用提供新值的引數呼叫set訪問器。例如:set
}
e1.name = "joe"; // the set accessor is invoked here在set訪問器中對區域性變數宣告使用隱式引數名 (value) 是錯誤的。
備註屬性按如下方式,根據所使用的訪問器進行分類:
在屬性宣告中,get和set訪問器都必須在屬性體的內部宣告。
使用get訪問器更改物件的狀態是一種錯誤的程式設計樣式。例如,以下訪問器在每次訪問number
欄位時都產生更改物件狀態的***。
public int number可以將get訪問器用於返回字段值,或用於計算字段值並將其返回。例如:}
public string name在上述**段中,如果不對}
name
屬性賦值,它將返回值na
。
示例 1
此例說明如何訪問基類中被派生類中具有同一名稱的另乙個屬性隱藏的屬性。
// property_hiding.cs
// property hiding
using system;
public class baseclass
set }}
public class derivedclass : baseclass
set }}
public class mainclass
",d1.name);
((baseclass)d1).name = "mary"; // base class property
console.writeline("name in the base class is: ",
((baseclass)d1).name); }}
輸出name in the derived class is: john
name in the base class is: mary
以下是上例中顯示的重點:
派生類中的屬性 name 隱藏基類中的屬性 name。在這種情況下,派生類的該屬性宣告使用 new 修飾符:
public new string name
{...
轉換 (baseclass) 用於訪問基類中的隱藏屬性:
((baseclass)d1).name = "mary";
c 中get set 的使用
在早期學習c 的過程中,經常遇到這樣的語句 public string studentname getset 當時也不是很明白為什麼要這樣?學深了c 後,又沒法對其做乙個總結。今天看了 visual c net程式設計教程 這本書,總結得不錯,做下筆記 在許多物件導向程式設計語言中,屬性 上面 中定...
《C 中get set的用法》
c 中get set 的用法 c get set用法中,get是讀取屬性時進行的操作,set是設定屬性時進行的操作。定義乙個屬性如果只有 get,這個屬性就是唯讀的。同樣,只有 set,屬性就是只寫的,當然只寫的屬性是沒有任務意義的。假設類是乙個銀行,既能存錢也能取錢.money就像銀行裡的自動訪問...
C 中get,set語句的使用方法
set語句的使用方法 set 語句 是通過value 識別符號來進行賦值的 可以包含任何語句 甚至沒有語句 struct time private int hour,minute,second time lunch new time lunch.hour 12 當寫乙個屬性的時候,屬性的set語句自...