如何在 c# 中检查动态对象是否为数组
本文关键字:对象 是否 数组 动态 检查 | 更新日期: 2023-09-27 18:35:31
我有一个dynamic
对象,有时是object
,有时是object[]
。
如何检查动态对象是否为数组?
使用 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);
为什么不只是"is"运算符(我刚刚在Visual Studio调试器的即时窗口上进行了快速测试),它可以工作。 但不确定蒂姆的答案是否是最佳的。
void foo(object o)
{
if( o is System.Array)
{
//its array
}
}
为了补充 Rango 的原始响应,一种更通用的确定方法是使用该类型的 IsSerializable 属性。因为如果对象是列表或任何其他集合,则 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
}