1

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

public bool ContainsValue(object value)

我发现将对象转换为IList作品。

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

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

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

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

4

3 回答 3

1

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

于 2011-03-01T09:01:44.727 回答
0

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

  1. AnIList不一定是List.
  2. 参数 forContainsValue可能应该比object.

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

using System.Linq;

...

List<object> list = ((IList<object>)value).ToList();
于 2011-07-08T15:06:03.413 回答
0

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

于 2011-03-01T08:57:06.103 回答