你不知道C#只带有Get访问器的属性是只读属性?

本文转载自微信公众号「UP技术控」,作者conan5566  。转载本文请联系UP技术控公众号。

问题窥探

之前有个哥们在使用Newtonsoft.Json反序列化的时候,发现明明有数据,但是就是序列化不出来数据到实体里面。

咋一看,确实没什么问题啊,字符串的数据是存在的。那么问题出在哪里呢。

解决思路

1、我让他把字符串复制出来,使用在线工具解析下,和实体对应的名称核对看下是否有出入。发现确实没问题。

2、于是我让他把实体文件发我下。

我查看了下,名称确实没问题。等等,这属性 public ListData { get; }?

 
 
 
 
  1. /// 
  2.   /// 跟踪信息头
  3.   /// 
  4.   public class O
  5.   {
  6.       /// 
  7.       /// 业务数据。
  8.       /// 
  9.       [JsonProperty("data")]
  10.       public List Data { get; }
  11.       /// 
  12.       /// 状态。
  13.       /// 
  14.       [JsonProperty("status")]
  15.       public int Status { get; }
  16.       ///// 
  17.       ///// 异常消息。
  18.       ///// 
  19.       //[JsonProperty("msg")]
  20.       //public string Message { get; }
  21.   }

于是,我让他这么干。

 
 
 
 
  1. { get; }=>{ get; set; }

问题解决。

总结

属性按如下方式,根据所使用的访问器进行分类:

只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。

只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。

同时带有 get 和 set 访问器的属性为读写属性。

在属性声明中,get 和 set 访问器都必须在属性体的内部声明。

使用 get 访问器更改对象的状态是一种错误的编程样式。

分享标题:你不知道C#只带有Get访问器的属性是只读属性?
浏览地址:http://www.csdahua.cn/qtweb/news27/382277.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网