【发布时间】:2010-05-19 16:35:03
【问题描述】:
如果我有这样的课程:
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”!为什么会这样,如果不在构造函数中设置变量,我怎样才能让它按我想要的方式工作?
【问题讨论】:
-
问题是 C++;标签说 C#。是哪个?
-
我看不出它在哪里说 C++。如果这是 C++,就会有一个 ;在我的课程的右括号;D
-
第三段,非代码块:“Visual C++ 会告诉我 B.fe 隐藏了 A.fe,所以我应该使用 new 关键字。所以我将 B 类更改为:”跨度>
标签: c# class inheritance variables member