使用带有多态性的foreach会产生空引用异常吗?

时间:2012-09-12 01:57:11

标签: c# foreach polymorphism

所以我试图遍历一个所有从BaseClass继承的对象数组,我的代码如下所示:

ChildClass object1 = new ChildClass();
OtherChildClass object2 = new OtherChildClass();
BaseClass array[] = {object1, object2}

foreach(BaseClass element in array)
{
    //do stuff
}

显然,ChildClass和OtherChildClass继承自BaseClass。 // do stuff的声明每次都会给出一个空引用异常,当我看到局部变量赋值时,“element”肯定是空的......但是“数组”远不是空的!

在我看来,foreach没有拿起数组中的项目,因为它们不完全是基类,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

狂野猜测:您正在执行的代码不是您上面的代码;您上面的代码将无法编译,因为您的数组声明需要:

BaseClass[] array = {object1, object2};

尝试一下,然后执行cleanrebuild步骤。