我正在尝试测试一个对象是什么类型的数组:1D,2D或数组/锯齿数组。
这是我试过的:
if (o is Array && ((Array)o).Rank == 2) {
Console.Write ("2D-Array: ");
}
/* else if (o[0] is Array) {
Console.WriteLine ("Jagged Array: ");
} */
else if (o is Array) {
Console.Write ("1D-Array: ");
}
但是中间测试不起作用,因为Cannot apply indexing with [] to an expression of type 'object'
你怎么能这样做?提前致谢。
答案 0 :(得分:2)
由于o
是object
并且您没有将其作为数组包装,因此此代码无法编译。这是一种更简单的方法:
var arr = o as Array;
if(arr != null)
{
if(arr.Rank == 2)
{
Console.Write ("2D-Array: ");
}
else if (arr.Length > 0 && arr.GetValue(0) is Array)
{
Console.WriteLine ("Jagged Array: ");
}
else
{
Console.Write ("1D-Array: ");
}
}