妈的,老子忍不住想骂,比尔.盖茨,什么吊C#新语言,语言清析透明.
妈的,老子忍不住想骂,比尔.盖茨,什么吊C#新语言,语言清析透明. 
 我以前是搞java的,本来想多学一分语言的,选择了C#,没想到,唉, 
 就连下面的这个程序,都让常人无法理解. 
 using   System; 
 class   A 
 {         protected   int   age=10; 
 	public   static   void   Main(String[]args) 
 	{ 
 		B   b=new   B(); 
 		Console.WriteLine(b.age);//请问一下此时怎么输出10,应当是11才对啊? 
 	} 
 } 
 class   B:A 
 { 
 	new   protected   int   age=11; 
 } 
 如果B类中不用new的话提示,必须用new说明父类中的age已经被继承了,所以我又加了new之后Console输出怎么还是10? 
 先说到这吧,吃饭去了,回来再讨论                                                                   
------解决方案--------------------new protected int age,屏蔽基类的age字段,而在基类中实例化B,调用B.age实际上调用的是A.age,因此结果是10,如果改为new public int age,结果就为11,至于原因就不多说了.像LZ这样基类调用子类,会把自己绕进去,还是找一些常见的用法来学飞C#语法.