将变量的值设置为类名

本文关键字:设置 变量 | 更新日期: 2023-09-27 18:06:34

我有两个继承类。这些类有一些静态变量。我想做的是,我想把一个对象的值设置为它的子类名,并调用子类方法与父对象。下面是示例代码:

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

还有其他办法吗?

将变量的值设置为类名

你在这里做的是,非常不合逻辑的。您正在给变量 switch 分配一个类名。那是不可能的。

你应该做的是:

Switch oSwitch = new BlueSwitch();
// this will print bar
oSwitch = new GreenSwitch();
// this will print bar2

边注

字段是静态的,变量Switch是一个Switch类型。如果你想做正确的事情,要么让你的类字段为公共字段(这也是不好的),并删除静态的东西,这会给你这个:

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