数组的数组

10

在C#中,如何创建数组的数组?我已经了解了如何创建交错数组,但我不确定这是否是最佳方法。我想实现类似于这样的效果:

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

那么我可以像这样访问它:myArray.myArray2[0];

我知道这个代码不会起作用,但只是一个例子,用来解释我的意思。

谢谢。


这并没有太多意义。你想要做什么? - SLaks
6个回答

15

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

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());
    }
}

1
如果您想初始化一个多维数组:int[][] myArrayOfIntArrays = { new int[] { 0, 1, 2 }, new int[] { 3, 4, 5 } }; - Steven Craft

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"

注意:

在使用jaggedArray之前,必须初始化其元素。

在您的情况下,您可以将数组包装在另一个类中,但我认为这似乎非常冗余。


4

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

        var list = new List<List<int>>();
        list.Add(new List<int>());
        list[0].Add(1);
        Console.WriteLine(list[0][0]);

0

通过使用交错数组来实现:

string[][] myArray;

你的方法并不是很合理:

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

如果可能的话,它应该至少达到

myArray[1].myArray2[20];

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


如果您不知道数组限制怎么办?就像数据库查询一样? - Alok Rajasukumaran
@AlokRajasukumaran,你一开始不会涉及到数组,所以我真的不明白你的问题。 - InBetween
好的,我正在使用Cassandra,我得到了一个数据对象。 我得到了一个列表数据类型,需要知道如何使用它。 - Alok Rajasukumaran
@AlokRajasukumaran,你似乎有一个问题,那么,请提出问题;评论不是你应该使用的工具。 - InBetween

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);

0

我不太明白你的真正目的。但是你可以使用dynamic类型来创建动态字典,如这里所述(请参见示例部分)。
但更有可能的是,你需要像其他答案中描述的多维数组。


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