using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 构造函数 { class Program { static void Main(string[] args) { person p1 = new person(); p1.num = 55; p1.showName(); Console.ReadKey(); } } class person { private int age; public int num { set { this.age = value; } get { return this.age; } } public void showName() { Console.WriteLine(this.age); } } }
public void showName() { Console.WriteLine(this.age); }
把this.age改成this.num输出的结果也是55,为什么啊 ?
这代码怎么执行的 啊?
public int num { set { this.age = value; } get { return this.age; } }
这this.Num不是也取得是this.age吗! 所以是一样的。
……我不说话
this.num执行到的时候,会去掉你写的属性,也就是调get方法,然后其实也就是访问this.age。所以没什么大惊小怪的
断个点就能很详细的了解了。。。。一步一步走。。
这个推荐楼主再去看一下书上关于属性这一章节,属性的作用就是封装字段,这里的num属性就是用来封装age字段的,很明显,get和set方法都是对age进行操作,因此调用num跟调用age是相同的结果,只是将age封装到属性中是为了避免在客户端直接操作age的值,使用属性了之后就可以在set中加上自己的判断条件,比如:age=-1;显然是不合常理的,这就是属性的好处。