zoukankan      html  css  js  c++  java
  • 【001:C# 中 get set 简写存在的陷阱】

    如下代码:

     1 public class Age
     2     {
     3 
     4         private int ageNum ;
     5 
     6         public int AgeNum { 
     7             get{ 
     8                 return this.ageNum;
     9             }
    10 
    11             set{
    12                 this.ageNum = value;
    13             }
    14         }
    15 
    16         public int getAgeNum(){
    17             return ageNum;
    18         }
    19 
    20         public void setAgeNum(int age){
    21             this.ageNum = age;
    22         }
    23 
    24     }

    在Main中做如下操作:

    1     Age age = new Age ();
    2     age.setAgeNum (234);
    3     Console.WriteLine ("age=" + age.AgeNum);
    4 
    5     age.AgeNum = 122;
    6     Console.WriteLine ("age=" + age.getAgeNum());

    输出: 

    age=234
    age=122

    但如果将 set get 采用简写方式,代码如下

    public class Age
        {
    
            private int ageNum ;
    
            public int AgeNum { set; get;
            }
    
            public int getAgeNum(){
                return ageNum;
            }
    
            public void setAgeNum(int age){
                this.ageNum = age;
            }
    
        }

    Main中内容不变,得到如下结果

    age=0
    age=234

    如果修改Main中代码顺序如下

    1 age.AgeNum = 122;
    2 Console.WriteLine ("age=" + age.getAgeNum());
    3 
    4 age.setAgeNum (234);
    5 Console.WriteLine ("age=" + age.AgeNum);

    结果为

    age=0
    age=122

    --------------------------------------------------------  更新 -------------------------------------------

    时间:2016/09/19

    仔细思考后,ageNum 和 AgeNum 两者实际上并无关联。

    使用

    1 public int AgeNum { 
    2              get{ 
    3                  return this.ageNum;
    4              }
    5  
    6              set{
    7                  this.ageNum = value;
    8              }
    9         }

    实际上就是等同 java 中的getValue和setValue。

    而使用 set;get简写的方式,操作的是AgeNum,与ageNum没有任何关系。

  • 相关阅读:
    【MySQL】(三)文件
    【MySQL】(二)InnoDB存储引擎
    Linux Shell脚本编程-信号捕获
    Linux Shell脚本编程-数组和字符串处理
    Linux Shell脚本编程-函数
    Linux Shell脚本编程-语句控制
    Linux Shell脚本编程-基础2
    Linux Shell脚本编程-基础1
    Awk
    Sed
  • 原文地址:https://www.cnblogs.com/yexiaopeng/p/5859671.html
Copyright © 2011-2022 走看看