行内の非表示のインスタンス変数aにアクセスできないのはなぜですか(int gimmeValue = shinyNewBObject.a;)?baseキーワードを使用してインスタンスにアクセスできることを理解しています。ただし、コンパイラは、shinyNewBObjectのオブジェクト参照を使用して静的変数を除外すると思いました。静的バージョンのaが除外されると、インスタンスバージョンのaが非表示になり、アクセスできるようになります。
何が起きてる?コンパイラーは、アセンブリ内のすべてのIDのリストを作成し、インスタンス変数が静的であるために他のIDを除外する前に非表示になっているため、インスタンス変数を除外しましたか?
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;
}
}