2011-03-01 79 views
1

我有一個帶有對象參數的方法。無法將System.Object []轉換爲System.Collections.Generic.List

public bool ContainsValue(object value) 

我發現將對象轉換爲IList的作品。

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

但是,將其轉換爲List則沒有。

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

我看着IList兩者的定義和List,他們似乎都實行EnumeratorCollection接口。我想知道爲什麼List不起作用,但IList呢。在框架中哪裏會崩潰,爲什麼?

+0

第一個問題:爲什麼是你的參數首先聲明爲類型'object'?您顯然正在使用支持泛型的框架版本:**使用它們**。第二個問題:您忘記告訴我們您的'對象'實例是什麼類型。 – 2011-03-02 05:44:49

回答

0

如果一個對象實現了IList接口,它並不意味着它實際上是List類型。它可以是實現IList接口的任何其他類型。

1

不是C#專家,但可能是IList是一個接口,而List是一個實現?這可能是IList另一個實現...

0

正如其他人所說,你有兩個問題:

  1. IList不一定是List
  2. ContainsValue的參數可能應該比object更具體。

然而,如果由於某種原因,參數必須保持和object,並且需要一個List,而不是IList,你可以這樣做:

using System.Linq; 

... 

List<object> list = ((IList<object>)value).ToList(); 
相關問題