このようなクラスがある場合:
class A {
public string fe = "A";
}
そして、それを継承するクラスは次のようになります。
class B : A {
public string fe = "B";
}
Visual C# は、B.fe が A.fe を隠していることを教えてくれるので、new キーワードを使用する必要があります。そこで、クラス B を次のように変更します。
class B : A {
public new string fe = "B";
}
そして、次のように A を受け取る関数があります (ただし、継承により、B も受け取ります)。
class D {
public static void blah(A anAObject) {
Console.Writeline(A.fe);
}
}
問題なく受け取る B オブジェクトのインスタンスを渡しても、"A" が出力されます。これはなぜですか。コンストラクターで変数を設定せずに、どのように機能させることができますか?