我有两个继承的课程。这些类有一些静态变量。我想要做的是,我想将对象的值设置为其子类名称,并使用父对象调用子类方法。这是示例代码:
class BlueSwitch : Switch {
public static string Foo = "bar";
}
class Green : Switch {
public static string Foo = "bar2";
}
Switch oSwitch = BlueSwitch;
Console.WriteLine(oSwitch.Foo); // should print out "bar" but instead i get compiler error
oSwitch = GreenSwitch;
Console.WriteLine(oSwitch.Foo); // should print out "bar2" but instead i get compiler error
任何其他想法我该怎么做?
答案 0 :(得分:2)
你在这里做的是非常不符合逻辑的。您正在向变量 oSwitch 指定一个类名。那是不可能的。
你应该做的是:
Switch oSwitch = new BlueSwitch();
// this will print bar
oSwitch = new GreenSwitch();
// this will print bar2
旁注
您的字段是静态的,变量 oSwitch 是开关类型。如果你想做正确的事情,要么将你的类字段设置为公共字段(这也是坏的)并删除静态的东西,它会给你这个:
class BlueSwitch : Switch {
public string Foo = "bar";
}
class Green : Switch {
public string Foo = "bar2";
}
或者您可以让它们保持静止,但您的代码将变为
string test = BlueSwitch.Foo;
// writes bar
test = GreenSwitch.Foo;
// writes bar2