Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在C#NET中实现不固定多维数组的最佳方法是什么?_C#_.net_Arrays_Multidimensional Array - Fatal编程技术网

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

什么';在C#NET中实现不固定多维数组的最佳方法是什么?,c#,.net,arrays,multidimensional-array,C#,.net,Arrays,Multidimensional Array,例如:变长整数数组的数组 在C++中,我们习惯于做如下的事情: int * * TwoDimAry = new int * [n] ; for ( int i ( 0 ) ; i < n ; i ++ ) { TwoDimAry[i] = new int [i + n] ; } 。。。在C#中,似乎没有相同的效果-也就是说,您必须同时对所有子数组进行初始化,并且它们必须具有相同的长度 我需要我的子数组彼此独立,就像它们在原生C++中一样。 使用托管集合实现此功能的最佳方法是什么

例如:变长整数数组的数组

在C++中,我们习惯于做如下的事情:

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

for ( int i ( 0 ) ; i < n ; i ++ )
{
    TwoDimAry[i] = new int [i + n] ;
}
。。。在C#中,似乎没有相同的效果-也就是说,您必须同时对所有子数组进行初始化,并且它们必须具有相同的长度

<>我需要我的子数组彼此独立,就像它们在原生C++中一样。
使用托管集合实现此功能的最佳方法是什么?有什么缺点我应该知道吗?< /P> < P>像C++一样,你需要初始化<代码> int [][]/COD> < /P>中的每个子数组。 但是,它们不需要具有相同的长度。(这就是它被称为锯齿阵列的原因)

例如:

int[][] jagged1 = new int[][] { new int[1], new int[2], new int[3] };
<>你的C++代码可以直接翻译成C::/P>
int[]TwoDimAry=newint[n][];
对于(int i=0;i
下面是一个使用1、2、3、….初始化的锯齿状数组的示例。。每行的元素

int N = 20;
int[][] array = new int[N][];      // First index is rows, second is columns
for(int i=0; i < N; i++)
{
    array[i] = new int[i+1];       // Initialize i-th row with 'i' columns
    for( int j = 0; j <= i; j++)
    {
         array[i][j] = N*j+i;      // Set a value for each column in the row
    }
}
int N=20;
int[][]数组=新的int[N][];//第一个索引是行,第二个是列
对于(int i=0;i对于.Net中的(int j=0;j),大多数情况下您根本不希望以这种方式使用数组。这是因为在.Net中,数组被视为与集合不同的动物。托管的,是的。集合?嗯,可能吧,但它会混淆术语,因为这意味着一些特殊的东西。如果您想要集合(提示:大多数情况下您需要),请查看Systems.Collections命名空间,特别是Systems.Collections.Generic。听起来您确实需要一个
列表
列表

如果您声明一个锯齿数组(
int[][
语法),子数组可以有不同的大小。如果您声明一个多维数组(
int[,]
语法),子数组将具有相同的长度。据我所知,.Net数组面向更结构化的信息和快速索引,代价是在插入/删除、排序、搜索、重新调整大小等方面具有灵活性。如果我在这里出错,请告诉我,但我相信这正是我在这个项目中需要的-更静态的dataset,具有持久性结构。@Giffy泛型列表与索引访问的数组具有大致相同的性能配置文件。我至少要选择列表。
int[][] TwoDimAry = new int[n][];

for(int i = 0; i < n; i++) {
    TwoDimAry[i] = new int[i + n];
}
int N = 20;
int[][] array = new int[N][];      // First index is rows, second is columns
for(int i=0; i < N; i++)
{
    array[i] = new int[i+1];       // Initialize i-th row with 'i' columns
    for( int j = 0; j <= i; j++)
    {
         array[i][j] = N*j+i;      // Set a value for each column in the row
    }
}