初始化多维char数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始化多维char数组相关的知识,希望对你有一定的参考价值。

我不知道发生了什么:D。我想创建多维char数组,但我没有看到错误。

private char[] Letters = new char[52]  'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f',
                                                'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L',
                                                'l','M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
                                                 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y',
                                                'y', 'Z', 'z';

private char[] SpecialLetteer = new char[7]  '#', '$', ':', '!', '_', '*', '@' ;

private char[,] LETTERS = new char[52, 7]  'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f',
                                                'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L',
                                                'l','M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
                                                 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y',
                                                'y', 'Z', 'z',  '#', '$', ':', '!', '_', '*', '@'  ;

ScreenShot from Visual Studio

答案

new char[52, 7]意味着将有一个包含52行和7列的2D数组。所以对于'LETTERS'中的第一行,你有52列[a-zA-Z]。

这就是它出现错误的原因。

另一答案

您正在以错误的方式初始化多维数组。第一个数字表示行数,第二个数字表示每行的值。所以在你的情况下你应该有52行和7个字符。例如:

private char[,] LETTERS = new char[3, 2] 
     'a', 'b' ,
     'c', 'd' ,
     'e', 'f' 
;
另一答案

你可以这样做:

  class Program
  
    static void Main(string[] args)
    
      char[] Letters = new char[52]  'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f',
                                      'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L',
                                      'l','M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
                                      'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y',
                                      'y', 'Z', 'z' ;

      char[] SpecialLetteer = new char[7]  '#', '$', ':', '!', '_', '*', '@' ;

      char[][] LETTERS = new char[][]  Letters, SpecialLetteer ;
    

  
另一答案

如果你想要一个包含一组字符的多维数组,一个52的数组,另一个包含7个字符的数组 - 正确的语法将是

char[][] LETTERS = new char[2][]  new char[] 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f',
                                            'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L',
                                            'l','M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
                                             'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y',
                                            'y', 'Z', 'z', 
                                            new char [] '#', '$', ':', '!', '_', '*', '@'  ;

通常称为锯齿状阵列。

您的语法声明为52 x 7数组。

另一答案

首先,首先用鼠标悬停在红色曲线上并阅读消息:

enter image description here

它说:

期望长度为“52”的阵列初始化器。

所以解决方案是满足这个期望并将52个元素放入X维度。但这只能解决问题的一半。下一个问题是你使用的是[,]二维数组。如果你看一下你在示例中看到的documentation of arrays,每个子数组的长度是相同的:

// Declare and set array element values int[,] multiDimensionalArray2 = 1, 2, 3 , 4, 5, 6 ;

我建议使用锯齿状数组,因为它允许子数组具有不同的长度,或者使用List作为第一个数组的容器:

    List<char[]> container =  new List<char[]>() new char[]'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f',
                                            'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L',
                                            'l','M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r',
                                             'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y',
                                            'y', 'Z', 'z', new char[] '#', '$', ':', '!', '_', '*', '@'  ;

以上是关于初始化多维char数组的主要内容,如果未能解决你的问题,请参考以下文章

多维数组

初始化多维数组

Typescript - 多维数组初始化

多维数组初始化

在 Java 中初始化多维数组

关于多维数组的注意事项