你不知道C#只帶有 get 訪問器的屬性是只讀屬性?


問題窺探

之前有個哥們在使用Newtonsoft.Json反序列化的時候,發現明明有數據,但是就是序列化不出來數據到實體里面。

 

 

 

 

 

 

咋一看,確實沒什么問題啊,字符串的數據是存在的。那么問題出在哪里呢。

解決思路

1、我讓他把字符串復制出來,使用在線工具解析下,和實體對應的名稱核對看下是否有出入。發現確實沒問題。

 

 

2、於是我讓他把實體文件發我下。

 

 

我查看了下,名稱確實沒問題。等等,這屬性  public ListData { get; }?

 

  /// <summary>
    /// 跟蹤信息頭
    /// </summary>
    public class O
    {
        /// <summary>
        /// 業務數據。
        /// </summary>
        [JsonProperty("data")]
        public List<TraceDto> Data { get; }
        /// <summary>
        /// 狀態。
        /// </summary>
        [JsonProperty("status")]
        public int Status { get; }

        ///// <summary>
        ///// 異常消息。
        ///// </summary>
        //[JsonProperty("msg")]
        //public string Message { get; }
    }

於是,我讓他這么干。

{ get; }=>{ get; set; }

 

 

問題解決。

總結

屬性按如下方式,根據所使用的訪問器進行分類:

只帶有 get 訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。

只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。

同時帶有 get 和 set 訪問器的屬性為讀寫屬性。

在屬性聲明中,get 和 set 訪問器都必須在屬性體的內部聲明。

使用 get 訪問器更改對象的狀態是一種錯誤的編程樣式。

 

 
        

 


免責聲明!

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



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