我有一个带对象参数的方法。
public bool ContainsValue(object value)
我发现将对象转换为IList
可以正常工作。
IList<object> list = (IList<object>)value;
但是,将其转换为List
则不会。
List<object> Ilist = (List<object>)value;
我查看了IList
和List
的定义,他们似乎都实现了Enumerator
和Collection
接口。我想知道为什么List
无效但IList
无效。在框架中它崩溃的原因和原因?
答案 0 :(得分:1)
不是C#专家,但可能是IList
是一个接口而List
是一个实现?它可能是IList
...
答案 1 :(得分:0)
如果一个对象实现了IList接口,那并不意味着它实际上是List类型。它可以是实现IList接口的任何其他类型。
答案 2 :(得分:0)
正如其他人所说,你有两个问题:
IList
不一定是List
。ContainsValue
的参数可能应该比object
更具体。 然而,如果由于某种原因,参数必须保留object
,并且您需要List
,而不是IList
,则可以执行此操作:
using System.Linq;
...
List<object> list = ((IList<object>)value).ToList();