如果我有这样的课程:
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”!为什么会这样,如果不在构造函数中设置变量,我怎样才能让它按我想要的方式工作?