C#如何判断一个对象是否是多维数组

use*_*685 3 c# reflection

我是 C# 的新手。我在 C# 中有一个对象,如何检查它是单维数组还是多维数组?

int[,] array = new int[2,3];
object obj = (object) array;
if(obj is Array)
{
    if(obj.Rank==2) // I need to cast obj to array first in order to call Rank
    {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 5

有两种主要方法可以实现这一点。无论是铸造 obj一个Array如你所说:

if(obj is Array && ((Array)obj).Rank == 2)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

或使用as运算符

var arr = obj as Array;
if(arr != null && arr.Rank == 2)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

请注意,在这两种解决方案中,为了简单起见,我if使用条件 AND 运算符( &&)将两者结合在一起。如果左侧评估为 ,这将仅评估右侧true