【问题标题】:Is there a more elegant way to nest arrays in C#?有没有更优雅的方式在 C# 中嵌套数组?
【发布时间】:2016-02-25 12:39:31
【问题描述】:

我正在翻译一个 C++ 项目中的矩阵,如下所示:

static int grad4[][4] = {{0,1,1,1}, {0,1,1,-1}, {0,1,-1,1}, {0,1,-1,-1},
{-1,1,1,0}, {-1,1,-1,0}, {-1,-1,1,0}, {-1,-1,-1,0}};

基本上在 C# 中实现它的方法是嵌套数组,对吗?所以数组看起来像这样:

static int[][] grad4 = new int[][]{
new int[]{0,1,1,1},new int[]{0,1,1,-1},new int[]{0,1,-1,1},new int[]{0,1,-1,-1},
new int[]{-1,1,1,0},new int[]{-1,1,-1,0},new int[]{-1,-1,1,0},new int[]{-1,-1,-1,0}};

如果矩阵不是太大也没关系,但是项目中有一些矩阵超过 80 列。有没有更简单的方法来初始化矩阵?谢谢你的帮助。

【问题讨论】:

    标签: c# arrays matrix


    【解决方案1】:

    根据MSDN你应该可以写

    static int[,] grad4 = new int[,]{{0,1,1,1}, {0,1,1,-1}, {0,1,-1,1}, {0,1,-1,-1},
                                     {-1,1,1,0}, {-1,1,-1,0}, {-1,-1,1,0}, {-1,-1,-1,0}};
    

    这声明了一个多维数组。锯齿状数组 (int[][]) 必须按照您的描述进行初始化。

    【讨论】:

      【解决方案2】:

      您可能应该考虑将数据存储在多维数组中,而不是锯齿状数组

      //multidimensional Array
      int[,] multi = { { 7, 2, 6, 1 }, { 3, 5, 4, 8 }, { 6, 2, 9, 50 } };
      
      
      //array of arrays (jagged arrays) 
      int[][] jagged = new int[][] { 
                        new int[] { 1, 2, 3, 4 }, 
                        new int[] { 11, 12 }, 
                        new int[] { 21, 22, 23 }
                        };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-11
        • 2019-01-12
        • 2021-10-29
        • 1970-01-01
        • 2023-04-02
        相关资源
        最近更新 更多