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

开发 后端
根据所使用的访问器进行分类:只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。

 [[388238]]

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

问题窥探

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

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

解决思路

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

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

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

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

于是,我让他这么干。

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

问题解决。

总结

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

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

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

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

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

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

 

责任编辑:武晓燕 来源: UP技术控
相关推荐

2021-07-12 07:59:06

安全 HTML 属性

2013-03-19 09:48:38

C#

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket浏览器

2021-08-16 08:47:10

You-GetPython应用程序

2024-01-26 06:26:42

Linuxfzf工具

2020-08-05 12:17:00

C语言代码分配

2009-08-24 08:56:55

C#反射

2010-08-23 09:56:09

Java性能监控

2019-11-25 14:05:47

Python装饰器数据

2022-04-14 09:01:19

CSS父选择器CSS类

2012-11-23 10:57:44

Shell

2015-06-19 13:54:49

2020-08-11 11:20:49

Linux命令使用技巧

2021-12-29 11:38:59

JS前端沙箱

2021-10-17 13:10:56

函数TypeScript泛型

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2009-12-10 09:37:43

2011-09-15 17:10:41

2021-02-01 23:23:39

FiddlerCharlesWeb
点赞
收藏

51CTO技术栈公众号