【发布时间】:2018-03-28 20:46:08
【问题描述】:
我有一个叫做 a 的基类,它有一个叫做 Foo 的虚函数
class a
{
public virtual void Foo() {}
}
我还有很多其他类继承自它。
class B : A{}
class C : A{}
class D : A{}
class E : A{}
现在,我想要一个类型的数组,所以我可以随机选择一个,所以我尝试了这个:
class Boo
{
Type[] options;
public Boo()
{
options = new[]
{
typeof(B),
typeof(C),
typeof(D),
typeof(E)
};
}
}
然后我想随机选择一个并使用它的 Foo 方法,我这样做了:
Random rnd = new Random();
(options[rnd.Next(options.Length)] as A).Foo()
但这不起作用,有没有办法做到这一点?
(顺便说一句,我没有一个好名字,所以如果有人有更好的名字,他们可以随时编辑:))
【问题讨论】:
-
“不起作用”是什么意思?有什么错误吗?
-
options 包含类型,其中 Foo() 需要一个实例。
-
options[rnd.Next(options.Length)] as A应该是null所以会抛出NullReferenceException。 -
@YeldarKurmangaliyev,它给出了这部分的转换错误: (options[rnd.Next(options.Length)] as A) "cannot convert from.... "
标签: c# inheritance types