Если у меня есть такой класс:
class A {
public string fe = "A";
}
И класс, который наследует от него, вот так:
class B : A {
public string fe = "B";
}
Visual C # скажет мне, что B.fe скрывает A.fe, поэтому я должен использовать новое ключевое слово. Поэтому я изменяю класс 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»! Почему это так, и как я могу заставить его работать так, как я хочу, не устанавливая переменную в конструкторе?