如何测试对象是否是数组/锯齿状数组的数组

时间:2015-01-01 07:43:03

标签: c# arrays types jagged-arrays

我正在尝试测试一个对象是什么类型的数组: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'

你怎么能这样做?提前致谢。

1 个答案:

答案 0 :(得分:2)

由于oobject并且您没有将其作为数组包装,因此此代码无法编译。这是一种更简单的方法:

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:  ");
    }
}