zoukankan      html  css  js  c++  java
  • 你不知道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 访问器更改对象的状态是一种错误的编程样式。

     

    
    

  • 相关阅读:
    当期所得税费用总额
    所得税净利润算法
    [AGC028B]Removing Blocks 概率与期望
    bzoj 4319: cerc2008 Suffix reconstruction 贪心
    bzoj 2430: [Poi2003]Chocolate 贪心
    BZOJ 2839: 集合计数 广义容斥
    luogu 5505 [JSOI2011]分特产 广义容斥
    CF504E Misha and LCP on Tree 后缀自动机+树链剖分+倍增
    CF798D Mike and distribution 贪心
    CF707D Persistent Bookcase 可持久化线段树
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/14553592.html
Copyright © 2011-2022 走看看