1

オブジェクトパラメータを持つメソッドがあります。

public bool ContainsValue(object value)

オブジェクトを作品に変換することがわかりましたIList

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

ただし、に変換することListはできません。

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

IListとの両方の定義を調べましたが、どちらもとインターフェイスListを実装しているようです。なぜ機能しないのか疑問に思いますが、機能します。フレームワークのどこでクラッシュしますか、またその理由は何ですか?EnumeratorCollectionListIList

4

3 に答える 3

1

C# の専門家ではありませんが、それIListはインターフェイスでListあり、実装である可能性がありますか? IListそれは...の別の実装かもしれません

于 2011-03-01T09:01:44.727 に答える
0

オブジェクトが IList インターフェイスを実装している場合でも、それが実際に List 型であるとは限りません。IList インターフェイスを実装する他の型にすることができます。

于 2011-03-01T08:57:06.103 に答える
0

他の人が言ったように、あなたには2つの問題があります:

  1. AnIListは必ずしも a ではありませんList
  2. のパラメータContainsValueは、おそらく よりも具体的なものにする必要がありobjectます。

ただし、何らかの理由でパラメータを と のままにする必要があり、 ではなくobjectが必要な場合は、次のようにすることができます。ListIList

using System.Linq;

...

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