C#中“public string Name { get; set; }”什么意思?


在工作看到這樣一段代碼:

    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM