[C#.NET] 使用屬性(Property) 的好處| 余小章@ 大內殿堂- 點部落
文章推薦指數: 80 %
[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
回首頁
延伸文章資訊
- 1[C#.NET] 使用屬性(Property) 的好處| 余小章@ 大內殿堂- 點部落
[C#.NET] 使用屬性(Property) 的好處. 我相信很多人寫很久的程式從沒有習慣使用property,甚至連property 是什麼都不知道,長期以來都是一直 ...
- 2屬性- C# 程式設計手冊
_seconds = value * 3600; } } } class Program { static void Main() { TimePeriod t = new TimePeriod...
- 3C# 属性(Property) | 菜鸟教程
C# 属性(Property) 属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为域(F...
- 4自動實作的屬性- C# 程式設計手冊 - Microsoft Docs
Its data can be modified from // outside the class. class Customer { // Auto-implemented properti...
- 5C# Properties (Get and Set) - W3Schools
C# also provides a way to use short-hand / automatic properties, where you do not have to define ...