在C#.NET中实现不固定的多deminsional数组的最佳方法是什么?

Gif*_*guy 2 .net c# arrays multidimensional-array

例如:一组不同长度的整数数组.

在C++中,我们习惯于这样做:

int * * TwoDimAry = new int * [n] ;

for ( int i ( 0 ) ; i < n ; i ++ )
{
    TwoDimAry[i] = new int [i + n] ;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果n == 3那么结果将是一个由三个整数数组指针组成的数组,并且看起来像这样:

http://img263.imageshack.us/img263/4149/multidimarray.png

当然,.NET数组是托管集合,因此您不必处理手动分配/删除.

但声明:

int[][] TwoDimAry ;
Run Code Online (Sandbox Code Playgroud)

...在C#中似乎没有相同的效果 - 即,您必须同时保留所有子数组,并且它们必须具有相同的长度.

我需要我的子数组彼此独立,因为它们是在本机C++中.

使用托管集合实现此目的的最佳方法是什么?我应该注意哪些缺点?

SLa*_*aks 7

像C++一样,你需要初始化每个子数组int[][].

但是,它们不需要具有相同的长度.(这就是为什么它被称为锯齿状阵列)

例如:

int[][] jagged1 = new int[][] { new int[1], new int[2], new int[3] };
Run Code Online (Sandbox Code Playgroud)

您的C++代码可以直接转换为C#:

int[][] TwoDimAry = new int[n][];

for(int i = 0; i < n; i++) {
    TwoDimAry[i] = new int[i + n];
}
Run Code Online (Sandbox Code Playgroud)