如何检查动态对象是否是c#中的数组?

时间:2012-05-29 01:34:25

标签: c# .net

我有一个dynamic对象,有时候是object,有时候是object[]

如何检查动态对象是否为数组?

3 个答案:

答案 0 :(得分:25)

使用Type.IsArray

来自MSDN:

int [] array = {1,2,3,4};
Type t = array.GetType();
// t.IsArray == true
Console.WriteLine("The type is {0}. Is this type an array? {1}", t, t.IsArray); 

答案 1 :(得分:3)

为什么不只是'是'运算符(我只是对Visual Studio调试器的即时窗口进行了快速测试),它的工作原理。但不确定蒂姆的答案是否最佳。

void foo(object o)
{
if( o is System.Array)
{
//its array
}

}

答案 2 :(得分:0)

为补充Rango的原始响应,一种更通用的确定方法是使用该类型的 IsSerializable 属性。因为如果对象是List或任何其他集合,则IsArray返回false。

int [] array = {1,2,3,4};
Type t1 = array.GetType();
// t1.IsArray == true
List<int> list = new List();
list.AddRange(array);
Type t2 = list.GetType();
//t2.IsArray = false;
//t2.IsSerializable = true;

foreach(var i in list) {
        // do stuff
}