C#:如何从父对象访问数组方法?

C#:如何从父对象访问数组方法?,c#,arrays,multidimensional-array,C#,Arrays,Multidimensional Array,我的ctor返回一个多维数组对象。根据构造函数参数,ctor返回的对象可以是不同的秩数组,但始终为int object arr = new int[2,2,2]; 或 或 构造了arr对象,并且知道它是什么(GetType()),我想访问数组方法,如Rank,GetLength,GetValue等。我如何从对象级别访问特定于子对象的方法?目前,我只有四种方法可以访问arr对象:Equals,GetHashCode,GetType,以及ToString将对象强制转换为数组,如下所示: ((int

我的ctor返回一个多维数组对象。根据构造函数参数,ctor返回的对象可以是不同的秩数组,但始终为int

object arr = new int[2,2,2];


构造了
arr
对象,并且知道它是什么(
GetType()
),我想访问数组方法,如
Rank
GetLength
GetValue
等。我如何从
对象
级别访问特定于子对象的方法?目前,我只有四种方法可以访问
arr
对象:
Equals
GetHashCode
GetType
,以及
ToString
将对象强制转换为数组,如下所示:

((int[])arr).Rank
((int[])arr).GetLength()


您可以将变量声明为
数组

Array arr = new int[2,2,2,2,2];
int rank = arr.Rank;
或强制转换到阵列:

object arr = new int[2,2,2,2,2];
Array array = (Array)arr;

您必须将其转换回数组对象,然后这些方法将可用

我可以问一下,当您知道它是一个整数数组时,为什么首先将它作为类型
对象
?(或至少类似)您可以将其键入为
Array
,但这仍然不是正确的做法。键入
int[]
。你的根本问题是不同的。对于不同类型的数组,可能需要不同的类实现。@Sayse:是的,我可以将其存储为数组而不是对象。说得对。信不信由你,我正要自己回答我的问题。我的答案和你的一样。谢谢
(arr as int[]).Rank
Array arr = new int[2,2,2,2,2];
int rank = arr.Rank;
object arr = new int[2,2,2,2,2];
Array array = (Array)arr;