C# 使用设置的数组长度初始化数组

C# 使用设置的数组长度初始化数组,c#,arrays,jagged-arrays,C#,Arrays,Jagged Arrays,我想初始化一个数组,如java中的数组: int[][] arrPos=new int[16][48]; int[][] arrPosOther=new int[16][48]; 我可以这样设置行数组值: arrPos[0]=arrPosOther[0]; arrPos[1][0]=125; int[][] arrPos=new int[16][]; 我可以这样设置单元格值: arrPos[0]=arrPosOther[0]; arrPos[1][0]=125; int[][] ar

我想初始化一个数组,如java中的数组:

int[][] arrPos=new int[16][48];
int[][] arrPosOther=new int[16][48];
我可以这样设置行数组值:

arrPos[0]=arrPosOther[0];
arrPos[1][0]=125;
int[][] arrPos=new int[16][];
我可以这样设置单元格值:

arrPos[0]=arrPosOther[0];
arrPos[1][0]=125;
int[][] arrPos=new int[16][];
但在C#中,我只能这样声明:

arrPos[0]=arrPosOther[0];
arrPos[1][0]=125;
int[][] arrPos=new int[16][];

无法在初始化中设置列值。

您似乎正在试图找到一种方法来初始化c#中的锯齿数组:请参考以下示例:

int[][] jaggedArray2 = new int[][] 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};
同一样本的缩写形式如下所示:

int[][] jaggedArray2 =
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};
您还可以通过以下几个步骤执行初始化:

int[][] jaggedArray = new int[3][];

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
显然,您可以实现一种
for
foreach
循环,以便从某些数据结构填充数组。更多阅读资料,请浏览:

也可以考虑使用多维数组,如代码> int [],(此例中的C语法与java LAN不同)。


希望这会有所帮助。

您似乎正在试图找到一种方法来初始化c#中的锯齿数组:请参考以下示例:

int[][] jaggedArray2 = new int[][] 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};
同一样本的缩写形式如下所示:

int[][] jaggedArray2 =
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};
您还可以通过以下几个步骤执行初始化:

int[][] jaggedArray = new int[3][];

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
显然,您可以实现一种
for
foreach
循环,以便从某些数据结构填充数组。更多阅读资料,请浏览:

也可以考虑使用多维数组,如代码> int [],(此例中的C语法与java LAN不同)。


希望这会有所帮助。

您不需要语法

一个语句选项可以是

 int[][] arrPos = Enumerable.Range(0, length).Select(_ => new int[length]).ToArray();

没有您正在寻找的语法

一个语句选项可以是

 int[][] arrPos = Enumerable.Range(0, length).Select(_ => new int[length]).ToArray();


但是,如果行或列的值很大,那么这种初始化类型就无法实现。如果不希望数组是锯齿状的,为什么不直接使用2d数组呢?否则,您需要使用for循环。我已经尝试过了,但是在C#中,我不能使用单个索引访问行数组,但在java中它可以工作。为了方便起见,我用更多的示例扩展了答案。您可以使用其中任何一种,具体取决于您的需求/偏好。同时,考虑由你的案子提出的建议。最好的问候,真的谢谢!最后,我使用了锯齿状数组,并使用for循环初始化第二个维度,但是如果行或列的值很大,那么这种初始化类型是不合适的。如果您不希望数组是锯齿状的,为什么不直接使用2d数组呢?否则,您需要使用for循环。我已经尝试过了,但是在C#中,我不能使用单个索引访问行数组,但在java中它可以工作。为了方便起见,我用更多的示例扩展了答案。您可以使用其中任何一种,具体取决于您的需求/偏好。同时,考虑由你的案子提出的建议。最好的问候,真的谢谢!最后,我使用了锯齿状数组并使用for循环初始化C中的第二个维度。您有两个选项-多维数组
int[,]
int[,,]
或锯齿状数组
int[]
。这2个将涵盖所有数组需要我知道锯齿类型,但我想初始化一个数组数组,如arr[255][255],我无法想象这个场景。如果你问我,这个-
arr[255][255]
没有任何意义,因为你声明了
255
的256个成员数组。第二个
[]
是另一个数组所在的位置,而不是某些数组所在的位置integer@AndyFong看起来你要求的东西与你发布的不同(可能是“如何将2D数组表示为一维数组”)——考虑一个新的问题来显示你在寻找什么。考虑接受Alex Bell的回答,它显示了当前问题中的语法。我同意Alexei Levenkov的观点。可能最好再贴一个问题(如果有的话),因为这个问题已经得到了彻底的回答。最好的祝愿,在C语言中,您有两个选项-多维数组
int[,]
int[,,]
或锯齿数组
int[]
。这2个将涵盖所有数组需要我知道锯齿类型,但我想初始化一个数组数组,如arr[255][255],我无法想象这个场景。如果你问我,这个-
arr[255][255]
没有任何意义,因为你声明了
255
的256个成员数组。第二个
[]
是另一个数组所在的位置,而不是某些数组所在的位置integer@AndyFong看起来你要求的东西与你发布的不同(可能是“如何将2D数组表示为一维数组”)——考虑一个新的问题来显示你在寻找什么。考虑接受Alex Bell的回答,它显示了当前问题中的语法。我同意Alexei Levenkov的观点。可能最好再贴一个问题(如果有的话),因为这个问题已经得到了彻底的回答。向您致意,Alexei,您发布了一个很好的示例,但从讨论线程来看,OP实际上是在寻找多维数组int[,](AFAIC,Java中没有这种语法)。向你问好,@AlexBell-也许。。。另一方面,在OP编辑问题以匹配评论之前,你们的答案仍然有效。请随意将此示例中的内容编辑到您的答案中。(我还对这个问题添加了评论,所以OP可能应该问一个新问题,澄清目标是什么。)是的,我同意:如果还有问题,最好再发一个。Thx和Allies,Alexei,您发布了一个很好的示例,但从讨论线程来看,OP实际上是在寻找多维数组int[,](AFAIC,Java中没有这种语法)。向你问好,@AlexBell-也许。。。另一方面,在OP编辑问题以匹配评论之前,你们的答案仍然有效。请随意将此示例中的内容编辑到您的答案中。(我还对这个问题添加了评论,所以OP可能应该问一个新问题,澄清目标是什么。)是的,我同意:如果还有问题,最好再发一个。Thx和问候,