强制转换数组类型

在C#中,我们可以通过执行对象的GetType()方法获取对象的类型,并且通过执行Type的IsArray方法可以判断某个对象是否为数组。

现在的问题是,如果你已经得知一个对象是一个数组对象,如果我需要遍历该数组对象,我们可以使用foreach语句,但是foreach语句要求操作数为一个数组,所以我们必须将操作的对象强制转换为一个数组,强制转换应该如何表达呢,由于我们只知道该对象是一个数组但是并不知道数组元素的实际类型(即使我们可以获取数组元素的type对象),所以无法写出强制类型转换表达式。也许你想使用Object[]来进行强制类型转换,毕竟Object是所有类型的超类,但是不幸的是Object[]并不是所有数组对象的超类,所以这个方法行不通。

那么数据类型的超类是什么了?C#中有一个单独的类Array,我们只要使用Array进行强制类型转换就可以了。

if (anArray.GetType().IsArray)
{
    foreach (Object item in (Array)anArray)
    {
        // ....
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>