C#中的二维数组

7
  • 我需要知道如何在C#中初始化数组的数组。
  • 我知道有多维数组,但我觉得在我的情况下不需要!

    我尝试了这段代码,但不知道如何用初始化列表进行初始化。

    double[][] a=new double[2][];// ={{1,2},{3,4}};

谢谢

PS:如果你想知道为什么我使用它:我需要一个数据结构,当我调用obj[0]时,它返回一个数组.. 我知道这很奇怪..

感谢

5个回答

5
据我所知,初始化一个锯齿数组最简单和击键有效的方法是这样的:
double[][] x = new []{new[]{1d, 2d}, new[]{3d, 4.3d}};

编辑:

实际上这也可以起作用:

double[][] x = {new[]{1d, 2d}, new[]{3d, 4.3d}};

第一个不应该是 double[][] x = new[][] { 吗? - Robert Harvey
1
那么多不必要的按键... 只需写成 double[][]x={new[]{1d,2},new[]{3,4.3}}; ;) - Guffa
1
@Robert Harvey,有点奇怪但不是。 - Pop Catalin

4
这应该可以正常工作:
double[][] a = new double[][] 
{ 
    new double[] {1.0d, 2.0d},
    new double[] {3.0d, 4.0d}
};

似乎在示例中缺少一个“{”符号。 - cyberzed
你在[2][]后面缺少了一个**{**。 - ntziolis
在下一行。 - Robert Harvey
您不需要指定“2”。 - Taylor Leese
你也不需要使用 double,只需要使用 new[] - Pop Catalin

3

由于您有一个数组的数组,因此您还必须在其中创建数组对象:

double[][] a = new double[][] {
  new double[] { 1, 2 },
  new double[] { 3, 4 }
};

2
double[][] a = new double[][] {
     new double[] {1.0, 1.0}, 
     new double[] {1.0, 1.0}
};

0

我不确定我的想法是否正确,但我一直在使用VB.net中的所谓结构体,并想知道这个概念在C#中是如何看待的。它与这个问题相关的方式是:

' The declaration part
Public Structure driveInfo
    Public type As String
    Public size As Long
End Structure
Public Structure systemInfo
    Public cPU As String
    Public memory As Long
    Public diskDrives() As driveInfo
    Public purchaseDate As Date
End Structure

' this is the implementation part 
Dim allSystems(100) As systemInfo
ReDim allSystems(1).diskDrives(3)
allSystems(1).diskDrives(0).type = "Floppy"

看看这一切是多么优雅,比锯齿数组更易访问。在C#中如何实现所有这些(也许是结构体?)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接