在工作看到這樣一段代碼:
public class PlacementPoint { public PlacementPoint(); public PlacementPoint(object value); public string Name { get; set; } public object Value { get; set; } public bool IsPort { get; set; } }
以public string Name { get; set; }為例,成員變量后面get與set的含義如下:
大多高級語言都class、struct等自定義類型,必然涉及到成員變量。
//C# code public class PlacementPoint { public string Name; //成員變量 }
顯然,按上面的定義,Code是public成員變量,其它類對象可以直接讀寫它。
但問題是,1.這樣做沒有封裝性,沒有數據安全性;2.並且有時我們是想定義只能讀或者只能寫的成員;甚至可能在寫(賦值)的時候加點其它判斷邏輯啊。
於是引出了屬性property,它有兩個方法,一個是get讀方法,一個是set寫方法:
//C# code public class PlacementPoint { private string _name; //私有成員 //_name對應的屬性定義 public string Name{ get { return _name; } set{ //此處前后還可以做點其它邏輯判斷 _name = value; //value是C#屬性關鍵字,代表賦值時右邊的新值 } } }
上面就是C#早期版本的屬性語法,但問題是,我就想定義一個簡單的屬性而已,寫的代碼是不是多了點,要先定義一個私有成員變量,再定義對應的set和get方法,如果一個類有多個這樣的屬性,代碼就千篇一律,垃圾代碼,於是C#又作出了改進,新語法中,上面的代碼被簡化成了:
public class PlacementPoint { public string Name { get; set; } }
C#編譯器會幫你做代碼擴展編譯成之前的那種代碼。
如果我只想定義只讀成員:
public class StandResponse { public string Code{get;} }
只寫成員類似。
————————————————
版權聲明:本文為CSDN博主「阿爾茲」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/alzzw/article/details/112859568