C# 初始化多维字符数组

C# 初始化多维字符数组,c#,C#,我不知道发生了什么:D。我想创建多维字符数组,但我没有看到错误 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',

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

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'}, { '#', '$', ':', '!', '_', '*', '@' } };
新字符[52,7]意味着将有一个包含52行和7列的2D数组。因此,对于“字母”中的第一行,有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数组。

首先,将鼠标悬停在红色曲线上,然后阅读消息:

它说:

需要长度为“52”的数组初始值设定项

所以解决办法就是满足这个期望,把52个元素放到X维中。但这只能解决问题的一半。下一个问题是您使用的是[,]二维数组。如果查看,您可以在示例中看到,每个子阵列的长度相同:

//声明并设置数组元素值 int[,]多维array2={{1,2,3},{4,5,6}

我建议使用交错数组,因为它允许子数组具有不同的长度,或者使用列表作为第一个到第二个数组的容器:

    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[]{ '#', '$', ':', '!', '_', '*', '@' } };

请不要发布代码截图和/或错误消息,请阅读:,和。但我看不到错误。如果您没有看到错误,您如何知道存在错误?查看并阅读错误消息-你的问题是什么?我看到一个错误-需要长度为“7”的数组初始值设定项-我认为这已经足够清楚了。@aquinas你有一个锯齿状数组而不是多维数组。你提供的链接告诉我们相反的情况:int[][]jaggedArray=new int[3][];