为什么我无法访问行中的隐藏实例变量 a (int gimmeValue = shinyNewBObject.a;) ?我知道我可以使用 base 关键字来访问实例 a。但是,我认为编译器会使用 shinyNewBObject 中的对象引用来排除静态变量。如果排除了 a 的静态版本,则 a 的实例版本将变得不隐藏,因此可以访问。
这里发生了什么?编译器是否创建了程序集中所有 a 身份的列表并排除了实例变量,因为它在排除另一个 a 因为它是静态的之前是隐藏的?
class A
{
public int a;
}
class B : A
{
new public static int a;
public void m()
{
B shinyNewBObject = new B();
int gimmeValue = shinyNewBObject.a; //Error
gimmeValue = base.a;
}
}