【001:C# 中 get set 简写存在的陷阱】

时间:2023-03-10 07:16:17
【001:C# 中 get set 简写存在的陷阱】

如下代码:

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

在Main中做如下操作:

     Age age = new Age ();
age.setAgeNum ();
Console.WriteLine ("age=" + age.AgeNum); age.AgeNum = ;
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中代码顺序如下

 age.AgeNum = ;
Console.WriteLine ("age=" + age.getAgeNum()); age.setAgeNum ();
Console.WriteLine ("age=" + age.AgeNum);

结果为

age=0
age=122

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

时间:2016/09/19

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

使用

 public int AgeNum {
get{
return this.ageNum;
} set{
this.ageNum = value;
}
}

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

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