【问题标题】:C# Creating an array of arraysC# 创建数组数组
【发布时间】:2009-02-14 17:28:09
【问题描述】:

我正在尝试创建一个将使用重复数据的数组数组,如下所示:

int[] list1 = new int[4] { 1, 2, 3, 4 };
int[] list2 = new int[4] { 5, 6, 7, 8 };
int[] list3 = new int[4] { 1, 3, 2, 1 };
int[] list4 = new int[4] { 5, 4, 3, 2 };

int[,] lists = new int[4, 4] {  list1 ,  list2 ,  list3 ,  list4  };

我无法让它工作,所以我想知道我是否处理错了。

我正在尝试做的是创建某种方法来创建一长串值,以便我可以按特定顺序重复处理它们。类似的,

int[,] lists = new int[90,4] { list1, list1, list3, list1, list2, (and so on)};

for (int i = 0; i < 90; ++i) {
   doStuff(lists[i]);
}

并将数组按顺序传递给doStuff()。我是完全错误的,还是我错过了创建数组数组的东西?

【问题讨论】:

    标签: c# arrays


    【解决方案1】:

    你需要做的是:

    int[] list1 = new int[4] { 1, 2, 3, 4};
    int[] list2 = new int[4] { 5, 6, 7, 8};
    int[] list3 = new int[4] { 1, 3, 2, 1 };
    int[] list4 = new int[4] { 5, 4, 3, 2 };
    
    int[][] lists = new int[][] {  list1 ,  list2 ,  list3 ,  list4  };
    

    另一种选择是创建List&lt;int[]&gt; 类型:

    List<int[]> data=new List<int[]>(){list1,list2,list3,list4};
    

    【讨论】:

    • 如何创建一个固定大小的空数组?存储在数组中的各个数组可能会有所不同,但主数组中的数组数量是固定的。
    【解决方案2】:

    问题是您试图将列表中的元素定义为多个列表(而不是定义的多个整数)。您应该像这样定义列表。

    int[,] list = new int[4,4] {
     {1,2,3,4},
     {5,6,7,8},
     {1,3,2,1},
     {5,4,3,2}};
    

    你也可以这样做

    int[] list1 = new int[4] { 1, 2, 3, 4};
    int[] list2 = new int[4] { 5, 6, 7, 8};
    int[] list3 = new int[4] { 1, 3, 2, 1 };
    int[] list4 = new int[4] { 5, 4, 3, 2 };
    
    int[,] lists = new int[4,4] {
     {list1[0],list1[1],list1[2],list1[3]},
     {list2[0],list2[1],list2[2],list2[3]},
     etc...};
    

    【讨论】:

      【解决方案3】:

      我认为您可能正在寻找Jagged Arrays,它与 C# 中的多维数组(如您在示例中使用的那样)不同。将声明中的数组转换为锯齿状数组应该可以正常工作。但是,您仍然需要使用两个循环来遍历 2D 锯齿状数组中的所有项目。

      【讨论】:

      • 您答案中的链接只是重定向到有关“新 Surface Pro”的页面。
      • 这篇文章已经有8年了...我认为linkrot是可以预料的!
      【解决方案4】:

      这会垂直循环,但可能对你有用。

      int rtn = 0;    
      foreach(int[] L in lists){
          for(int i = 0; i<L.Length;i++){
                rtn = L[i];
            //Do something with rtn
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 2021-06-26
        • 2021-10-21
        • 2011-12-26
        • 2011-01-11
        • 1970-01-01
        相关资源
        最近更新 更多