日期:2014-05-19  浏览次数:20457 次

有点不懂,请高手指教!
using   System;  
public   class   cls  
{  
private   int   book;
public   int   Book  
{  
get  
{  
Console.WriteLine( "dsf ");  
return   book;  

}  
set  
{  
Console.WriteLine( "aaa ");  
book=value;  

}  
}  
public   static   void   Main()  
{  
cls   obj   =   new   cls();  
obj.Book   =   120;
Console.WriteLine(obj.Book);  
}  

}  

为什么输出的是
aaa
dsf
120
呢?   能详细解答一下吗?   谢谢!

------解决方案--------------------
obj.Book = 120
执行了set,也就执行了Console.WriteLine( "aaa "); 同时设置book为120
obj.Book
执行了get,Console.WriteLine( "dsf "); 然后在返回book也就是120

------解决方案--------------------
obj.Book = 120; ==> 执行 set


Console.WriteLine(obj.Book); 先执行 get 然后执行 Write
------解决方案--------------------
obj.Book = 120;对属性赋值就是使用set里面的方法
Console.WriteLine(obj.Book---这个是取出属性值使用了get里面的方法
这个很好解释啊
------解决方案--------------------
cls obj = new cls(); //创建一个cls对象obj
obj.Book = 120; //设置obj的属性book的值为120 这里有两步 (首先执行obj.Book属性(这样楼主应该好理解点C#中的属性实际就是用来给private变量赋值的特殊函数.) 这里就输出了Console.WriteLine( "aaa "); )

Console.WriteLine(obj.Book);
//这里同上 也是两步


------解决方案--------------------
obj.Book = 120
执行了set,也就执行了Console.WriteLine( "aaa "); 同时设置book为120
obj.Book
执行了get,Console.WriteLine( "dsf "); 然后在返回book也就是120

加个断点逐步调适一下就明白了!