将IList <t>转换为T []类型的数组会导致枚举吗?</t>

时间:2010-03-16 15:04:31

标签: c# .net arrays ilist

我的方法如下:

T[] field;

public Method(IList<T> argument)
{
    this.field = (T[])argument;
}

当执行方法体时,在演员表中是否进行枚举?如果基础类型不同,会改变吗?

2 个答案:

答案 0 :(得分:8)

不,它不会枚举任何东西。如果argument实际上 T[],它会成功,如果不是,则会抛出InvalidCastException异常。 (如果argument为空,则返回null。)

答案 1 :(得分:4)

如果argument是对数组(类型T)的引用,则没有枚举 - 它是一个简单的强制转换。

如果argument是对List<T>或其他实现IList的类的引用,则可能存在转换异常。 (我可能会说,因为可能会有一个隐含或明确转换为T[] - 很可能不存在这种情况。

编辑:正如Jon指出的那样,不会在泛型方法中进行转换,因此上述括号不正确。