16

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

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

4

3 回答 3

30

使用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); 
于 2012-05-29T01:35:44.983 回答
6

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

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

}
于 2014-04-15T21:23:57.327 回答
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
}
于 2019-05-30T20:16:14.860 回答