将变量的值设置为类名

时间:2016-09-11 00:31:15

标签: c#

我有两个继承的课程。这些类有一些静态变量。我想要做的是,我想将对象的值设置为其子类名称,并使用父对象调用子类方法。这是示例代码:

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

任何其他想法我该怎么做?

1 个答案:

答案 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