0

基本的に、オブジェクト型のパラメーターを取るメソッドがあります。そのオブジェクトが実際にはリスト、配列、またはあらゆる種類のコレクションである場合、含まれる要素の数を取得する必要があります。

配列かどうかは確認できますが、型の IsArray プロパティを確認してから、オブジェクトを配列にキャストしますが、他のコレクションを確認するにはどうすればよいですか?

テストでは、List が ICollection にキャストされることが示されていますが、オブジェクトが実際に任意のタイプの List であることを確認する方法がわかりません。

4

4 に答える 4

2

これが必要かどうかはわかりませんが、すべての配列とコレクションは列挙可能です:

var enumerableObj = obj as IEnumerable;
if(enumerableObj != null)
{
    var count = enumerableObj.Count();

    .....

}
于 2013-11-07T21:00:26.583 に答える
1

isタイプチェックに使用できるキーワードを使用できます。ICollectionIEnumerableなどのチェックを入力できIListます。以下の例。

var obj = new List<int>();

if (obj is IList)//True
    var count = ((IList)obj).Count;
于 2013-11-07T21:00:12.877 に答える
1

オブジェクトが存在するかどうかを確認できます。存在する場合IEnumerableは、Extension メソッドを使用して IEnumerable<T>

IEnumerable e = obj as IEnumerable;
if (e != null)
   count = e.Cast<object>.Count();
于 2013-11-07T21:40:22.860 に答える
0

Type.IsAssignableFrom メソッドを使用して、型がある種のコレクションであることを確認することもできます。

typeof(IEnumerable).IsAssignableFrom(yourType)
于 2013-11-07T21:13:55.033 に答える