我有一个dynamic
对象,有时候是object
,有时候是object[]
。
如何检查动态对象是否为数组?
答案 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
}