[C#.NET] 使用屬性(Property) 的好處| 余小章@ 大內殿堂- 點部落

文章推薦指數: 80 %
投票人數:10人

[C#.NET] 使用屬性(Property) 的好處. 我相信很多人寫很久的程式從沒有習慣使用property,甚至連property 是什麼都不知道,長期以來都是一直 ... [C#.NET]使用屬性(Property)的好處 我相信很多人寫很久的程式從沒有習慣使用property,甚至連property是什麼都不知道,長期以來都是一直使用Globalparameter,而不知使用property可以更靈活的控制變數,先來介紹一下屬性的結構:請參考屬性(C#程式設計手冊) 屬性的寫法如下: privatestring_Info=""; publicstringInfo {    get{returnthis._Info;}    set{this._Info=value;} } 屬性有get及set區段,get區段用來回傳給用戶讀取,set是開放給用戶修改,也就是使用value。

而在在.Net3.0裡可以這樣寫 publicstringInfo{get;set;}   好處一:權限控制 publicclassClass1 { privatestring_Info="測試資訊"; publicstringInfo { get{returnthis._Info;} internalset{this._Info=value;} } }   這時會有人問,為什麼我要控制變數存取的權限?什麼時候該開放給用戶端(PG)修改? 很簡單,比如說我設計一個類別訪問某個設備,類別有一個變數可以得到設備的軔體版本,這個變數就不可能會由用戶端(PG)修改,用戶端(PG)只會得到(get)訊息,而不可能修改(set)訊息,因為這個訊息是由設備給予的,而不是用戶端。

類別有一個變數可以設定IP位址的,用戶端需要傳入IP(set)來設設備,這時就需要修改(set)這個變數。

若是不想給用戶修改其值,在set前面加修釋詞private或internal,代表這個變數只有自己或內部能修改,其他的人不能修改,如此一來便能很輕易的控制變數存取的權限,。

  好處二:資料綁定 資料綁定的綁定機制是使用類別裡的屬性 [ADO.NET]類別(DataTransferObject)與資料繫結 [.NET]結構二進位序列化/反序列化   好處三:行為控制 privatestring_Name="余小章"; publicstringName { get{returnthis._Name;} set { if(string.IsNullOrEmpty(value)) thrownewArgumentNullException("Name"); this._Name=value; } }   試著想想,若是使用全域變數,每個需要用到Name變數處理一次判斷式,不是很累嗎?我們可以在屬性判斷傳入的值是否符合規則、是否要觸發某個事件、執行緒同步等等…。

privatestring_Name="余小章"; publicstringName { get { lock(this._lock) returnthis._Name; } set { lock(this._lock) { if(string.IsNullOrEmpty(value)) thrownewArgumentNullException("Name"); this._Name=value; } } }     後記: 有天老闆問起為什麼要用屬性,我講了一堆,我想他當時一定聽不懂…於是寫了這篇,也希望能讓其他人也能懂。

若有謬誤,煩請告知,新手發帖請多包涵MicrosoftMVPAward2010~2017C#第四季MicrosoftMVPAward2018~2022.NET 回首頁



請為這篇文章評分?