无法将System.Object []转换为System.Collections.Generic.List

时间:2011-03-01 08:45:31

标签: collections ienumerable generics icollection

我有一个带对象参数的方法。

public bool ContainsValue(object value)

我发现将对象转换为IList可以正常工作。

IList<object> list = (IList<object>)value;

但是,将其转换为List则不会。

List<object> Ilist = (List<object>)value;

我查看了IListList的定义,他们似乎都实现了EnumeratorCollection接口。我想知道为什么List无效但IList无效。在框架中它崩溃的原因和原因?

3 个答案:

答案 0 :(得分:1)

不是C#专家,但可能是IList是一个接口而List是一个实现?它可能是IList ...

的另一个实现

答案 1 :(得分:0)

如果一个对象实现了IList接口,那并不意味着它实际上是List类型。它可以是实现IList接口的任何其他类型。

答案 2 :(得分:0)

正如其他人所说,你有两个问题:

  1. IList不一定是List
  2. ContainsValue的参数可能应该比object更具体。
  3. 然而,如果由于某种原因,参数必须保留object,并且您需要List,而不是IList,则可以执行此操作:

    using System.Linq;
    
    ...
    
    List<object> list = ((IList<object>)value).ToList();