摘要:物件導向 GET/SET 與 一些心得
Q: GET/SET的意義
private string _sname;
public string sname {
get{ return _sname; }
set { _sname = value; }
}
1.
比如說這個類別叫Student的話
Student std = new Student();
當你使用
std.sname 想要讀取sname的值的話 則是GET
若是往std.sname裡面塞值的話 則是 SET 如 std.sname = "CLRIS";
2.
為何要多創一個_sname
類型 'System.StackOverflowException' 的未處理例外狀況發生
若不這樣多創一個變數就接值 最後會發生以上這個錯誤
值得注意的是 set裡面的value 則是呼叫它的實體塞進來的值
3.
GET SET最後都是回到sname 的內容
GET 裡面運算式會設定給sname 最後給呼叫者拿取sname內容
SET 裡面運算式會設定給sname並改變sname內容
Q: SET 與 存取 類別涵式
要注意不要寫錯
若是要使用SET std.欄位 = 給予的值;
若是使用類別的函式則是 std.方法名稱( 參數);
Q: 創出來的物件的生命週期
如果 你使用Student std = new Student();
則std 裡面的欄位值則會一直存在
Q: 為何類別裡面有創欄位卻存取不到
類別裡面的欄位 記得要加修飾字 不然會存取不到 因為預設是private
string sName = "123"; <===這種寫法物件無法取得此欄位
若是這個類別有用到namespace
namespace test{
public class student{
}
}
則創建物件時要用包含namespace的完整名稱
test.student oStd = new test.student();
或者可以維持原樣但是要
using test;
靜態類別
也可以類別不是靜態,但是某欄位是靜態
使用此欄位時不需要NEW