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

妈的,老子忍不住想骂,比尔.盖茨,什么吊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#语法.