【问题标题】:How to test if an object is an array of arrays/jagged array如何测试一个对象是否是数组/锯齿状数组的数组
【发布时间】:2015-02-28 00:22:00
【问题描述】:

我正在尝试测试对象是什么类型的数组:一维、二维或数组数组/锯齿状数组。

这是我尝试过的:

    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'

你还能怎么做?提前致谢。

【问题讨论】:

  • 您可以使用GetValue。但这new object[]{new object[0],3} 是锯齿状数组吗?

标签: c# arrays types jagged-arrays


【解决方案1】:

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

【讨论】:

  • 你也不能索引Array
  • @PetSerAl 正确,我看到Array 实现了IList,但我不确定实现是否明确。固定。
猜你喜欢
  • 2015-09-23
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2010-11-08
  • 2014-05-16
  • 2015-04-23
  • 2020-04-02
相关资源
最近更新 更多