1

オブジェクトが配列なのか IEnumerable なのかを調べる方法があるのだろうかと思いますが、これよりもきれいでした:

var arrayFoo = new int[] { 1, 2, 3 };

var testArray = IsArray(arrayFoo);
// return true
var testArray2 = IsIEnumerable(arrayFoo);
// return false

var listFoo = new List<int> { 1, 2, 3 };

var testList = IsArray(listFoo);
// return false
var testList2 = IsIEnumerable(listFoo);
// return true


private bool IsArray(object obj)
{
    Type arrayType = obj.GetType().GetElementType();
    return arrayType != null;
}

private bool IsIEnumerable(object obj)
{
    Type ienumerableType = obj.GetType().GetGenericArguments().FirstOrDefault();
    return ienumerableType != null;
}
4

2 に答える 2

7

isC# には次のキーワードがあります。

private bool IsArray(object obj)
{
    return obj is Array;
}

private bool IsIEnumerable(object obj)
{
    return obj is IEnumerable;
}
于 2013-07-25T19:03:18.360 に答える
5

これは役に立ちますか?

「である」キーワード

オブジェクトが特定の型と互換性があるかどうかを確認します。

static void Test(object value)
{
    Class1 a;
    Class2 b;

    if (value is Class1)
    {
        Console.WriteLine("o is Class1");
        a = (Class1)o;
        // Do something with "a."
    } 
}

「as」キーワード

値を特定の型にキャストしようとします。キャストが失敗した場合、null が返されます。

Class1 b = value as Class1;
if (b != null)
{
   // do something with b
}

参照

「である」キーワード

http://msdn.microsoft.com/en-us/library/scekt9xw(v=vs.110).aspx

「as」キーワード

http://msdn.microsoft.com/en-us/library/cscsdfbt(v=vs.110).aspx

于 2013-07-25T19:03:08.607 に答える