【问题标题】:Can't convert System.Object[] to System.Collections.Generic.List无法将 System.Object[] 转换为 System.Collections.Generic.List
【发布时间】:2011-07-06 08:20:39
【问题描述】:

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

public bool ContainsValue(object value)

我发现将对象转换为 IList 是可行的。

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

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

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

我查看了IListList 的定义,它们似乎都实现了EnumeratorCollection 接口。我想知道为什么List 不起作用但IList 起作用。它在框架中的哪个位置崩溃?为什么?

【问题讨论】:

  • 第一个问题:为什么你的参数首先声明为object类型?您显然正在使用支持泛型的框架版本:使用它们。第二个问题:您忘记告诉我们您的object 实例是什么类型。

标签: collections ienumerable generics icollection


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      1. IList 不一定是List
      2. ContainsValue 的参数可能应该比object 更具体。

      然而,如果由于某种原因参数必须保留和object,并且您需要List,而不是IList,您可以这样做:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多