9

如何在 C# 中创建数组数组?我已经阅读过有关创建锯齿状数组的信息,但我不确定这是否是最好的方法。我想实现这样的目标:

string[] myArray = {string[] myArray2, string[] myArray3}

然后我可以像访问它myArray.myArray2[0];

我知道该代码不起作用,但只是作为解释我的意思的示例。

谢谢。

4

6 回答 6

14

数组数组或多维数组的简单示例如下:

int[] a1 = { 1, 2, 3 };
int[] a2 = { 4, 5, 6 };
int[] a3 = { 7, 8, 9, 10, 11 };
int[] a4 = { 50, 58, 90, 91 };

int[][] arr = {a1, a2, a3, a4};

测试数组:

for (int i = 0; i < arr.Length; i++)
{
    for (int j = 0; j < arr[i].Length; j++)
    {
        Console.WriteLine("\t" +  arr[i][j].ToString());
    }
}
于 2011-06-19T16:44:22.843 回答
6

你需要一个锯齿状数组,这是最好的解决方案

int[][] j = new int[][] 

或者:

string[][] jaggedArray = new string[3][];

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

然后:

jaggedArray[0][3] = "An Apple"
jaggedArray[2][1] = "A Banana"

ETC...

笔记:

在你可以使用 jaggedArray 之前,它的元素必须被初始化。

在您的情况下,您可以将数组包装在另一个类中,但这似乎非常多余,恕我直言

于 2011-06-19T16:30:09.410 回答
3

您可以使用列表列表。列表 - 它只是动态数组:

        var list = new List<List<int>>();
        list.Add(new List<int>());
        list[0].Add(1);
        Console.WriteLine(list[0][0]);
于 2011-06-19T16:42:54.413 回答
0

做到这一点的方法是通过锯齿状数组:

string[][] myArray;

你的方式真的没有意义:

myArray.myArray2[20] // what element is the first array pointing to?

至少应该是(如果可能的话)

myArray[1].myArray2[20];

这显然比使用锯齿状数组执行操作的标准方式更糟糕:myArray[1][20];

于 2011-06-19T16:34:23.640 回答
0

我无法理解你的真正目的。但作为选项,您可以使用dynamictype 来创建动态字典,如此所述(参见示例部分)。
但是您更有可能需要其他答案中描述的多维数组

于 2011-06-19T16:41:19.930 回答
0

我想做同样的事情来获取枚举表示的字符串列表。这是一个可能的解决方案:

     public enum Group
     {
          All = 0,
          Artists = 1,
          Builders = 2
      }

      private static readonly string[] _rolesAll = { "Brett", "Jeff", "Virgil", "Danielle" };
      private static readonly string[] _rolesArtists = { "Brett", "Danielle" };
      private static readonly string[] _rolesBuilders = { "Jeff" };

      private static readonly SortedList<Group, string[]> _sortedGroupToRoles = new SortedList<Group, string[]> { { Group.All, _rolesAll }, { Group.Artists, _rolesArtists}, { Group.Builders, _rolesBuilders } };

然后使用它:

      _sortedGroupsToRoles.TryGetValue(Group.Artists, out string[] roles);
于 2021-12-23T11:49:20.390 回答