zoukankan      html  css  js  c++  java
  • C#自定义属性(跟成员变量的区别)

    属性声明

    public int age { get; set; }

    从功能上等价于

    private int m_age;

    public int age {
    get { return m_age; }
    set { m_age = value; }
    }
     
    在这里,属性和成员变量的区别不大。
    等价于 public int age;
     
    也就是一开始的时候, 无视 有限性、读写权限的情况下。
    先偷懒, 写成
    public int age { get; set; }

    项目写到某个阶段了, 要求 age 数值必须有效了。 不能年龄小于 0 的.
    那么切换成

    private int m_age;

    public int age {

    get { return m_age; }

    set {
    if( value < 0 ) {
    // 抛个异常什么的.........
    }
    m_age = value;
    }
    }


    或者又到某个阶段了, 说 age > 30 不结婚违法什么的。

    那么切换成

    private int m_age;

    public int age {

    get { return m_age; }

    set {
    if( value < 0 ) {
    // 抛个异常什么的.........
    }
    m_age = value;

    if( value > 30 && marryed == false) {
    // 触发某事件......
    }
    }
    }



    或者又到某个阶段了, 说 age 不能外部设置, 外部只能设置 生日。 age 是只读的, 通过生日计算的。


    那么切换成

    public int age {
    get { return 今年 - 生日的年; }
    }

    这样修改以后, 原先所有的 直接 设置 age 的代码, 将编译不通过。 可以简单去注释掉即可。
     
    也就是在属性中,我们可以自定义对变量的读写进行控制,在读写的内部尽量将可能出现的异常给处理掉,在读写的时候就相对安全。
  • 相关阅读:
    数列分块入门 1-8
    最远点对 [线段树+树的直径]
    实验室外的攻防战 UOJ#180 [树状数组]
    二叉搜索树 [四边形不等式优化区间dp]
    树上的等差数列 [树形dp]
    序列 [树状数组+离散化]
    ATcoder1983 BBQ Hard
    8.18日报
    8.17日报
    8.16日报
  • 原文地址:https://www.cnblogs.com/lzgeveryday/p/4315840.html
Copyright © 2011-2022 走看看