如何声明二维字符串数组?

75 c# arrays jagged-arrays multidimensional-array array-initialization

string[][] Tablero = new string[3][3];
Run Code Online (Sandbox Code Playgroud)

我需要一个3x3阵列安排来保存信息.我如何在C#中声明这个?

exp*_*rer 107

string[,] Tablero = new string[3,3];
Run Code Online (Sandbox Code Playgroud)

您还可以使用数组初始化程序语法在同一行中实例化它,如下所示:

string[,] Tablero = new string[3, 3] {{"a","b","c"},
                                      {"d","e","f"}, 
                                      {"g","h","i"} };
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用数组初始化器语法,你不需要提供边界(即你可以只写`new string [,]`) (9认同)
  • 为了澄清 [3, 3] 中的前 3 个是行数,第二个 3 是列数(每个人似乎都选择了 [3, 3] 只是为了混淆:-)) (3认同)
  • 或者`var tablero = new string [3,3];`如果您使用的是C#3或更高版本 (2认同)
  • 您根本不需要编写`new string [,]`...`string [,] Tablero = {{“ a”,“ b”,“ c”},{“ d”,“ e”, “ f”},{“ g”,“ h”,“ i”}}` (2认同)

Dir*_*mar 52

你可能想要这个:

string[,] Tablero = new string[3,3];
Run Code Online (Sandbox Code Playgroud)

这将创建一个类似矩阵的数组,其中所有行具有相同的长度.

样本中的数组是一个所谓的锯齿状数组,即一个数组数组,其中元素的大小可以不同.必须以不同的方式创建锯齿状数组:

string[][] Tablero = new string[3][];
for (int i = 0; i < Tablero.GetLength(0); i++)
{
    Tablero[i] = new string[3];
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用初始化程序用数据填充数组元素:

string[,] Tablero = new string[,]
{
    {"1.1","1.2", "1.3"},
    {"2.1","2.2", "2.3"},
    {"3.1", "3.2", "3.3"}
};
Run Code Online (Sandbox Code Playgroud)

如果是锯齿状阵列:

string[][] Tablero = new string[][]
{
    new string[] {"1.1","1.2", "1.3"},
    new string[] {"2.1","2.2", "2.3"},
    new string[] {"3.1", "3.2", "3.3"}
};
Run Code Online (Sandbox Code Playgroud)


Bas*_*dov 13

你刚刚声明了一个锯齿状的数组.这种类型的阵列可以具有不同尺寸的所有尺寸.例如:

string[][] jaggedStrings =  {
new string[] {"x","y","z"},
new string[] {"x","y"},
new string[] {"x"}
};
Run Code Online (Sandbox Code Playgroud)

在你的情况下,你需要常规阵列.见上面的答案. 更多关于锯齿状阵列的信息


Han*_*ant 10

我假设你正在寻找这个:

        string[,] Tablero = new string[3,3];
Run Code Online (Sandbox Code Playgroud)

锯齿状数组的语法是:

        string[][] Tablero = new string[3][];
        for (int ix = 0; ix < 3; ++ix) {
            Tablero[ix] = new string[3];
        }
Run Code Online (Sandbox Code Playgroud)


Lev*_*Lev 9

C#中有两种类型的多维数组,称为MultidimensionalJagged.

对于多维,您可以通过:

string[,] multi = new string[3, 3];

对于锯齿状数组,您必须编写更多代码:

string[][] jagged = new string[3][];
            for (int i = 0; i < jagged.Length; i++)
            {
                jagged[i] = new string[3];
            }
Run Code Online (Sandbox Code Playgroud)

简而言之,锯齿状阵列既快又具有直观的语法.有关更多信息,请参阅:此Stackoverflow问题

  • 在锯齿状的情况下,你可以直接初始化它,如`string [] [] jagged = {new [] {"a","b","c"},new [] {"d","e","f "},new [] {"g","h","i"}};`**或**`var jagged = new [] {new [] {"a","b","c" },new [] {"d","e","f"},new [] {"g","h","i"}}; (3认同)

Chr*_*ond 5

string[,] Tablero = new string[3,3];
Run Code Online (Sandbox Code Playgroud)


小智 5

当您尝试创建一个多维数组时,您需要做的就是在声明中添加一个逗号,如下所示:

string[,] tablero = new string[3,3].
Run Code Online (Sandbox Code Playgroud)


Hei*_*nzi 5

string[][]不是一个二维阵列,它的一个数组的数组(一个交错数组).那是不同的.

要声明二维数组,请使用以下语法:

string[,] tablero = new string[3, 3];
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个锯齿状数组,你需要像这样初始化它:

string[][] tablero = new string[][] { new string[3], 
                                      new string[3], 
                                      new string[3] };
Run Code Online (Sandbox Code Playgroud)


naw*_*fal 5

3x3(多维)数组也可以这样初始化(您已经声明过):

string[,] Tablero =  {
                        { "a", "b", "c" },
                        { "d", "e", "f" }, 
                        { "g", "h", "i"} 
                     };
Run Code Online (Sandbox Code Playgroud)

  • 哦好的。我会摆脱我的反对意见,但似乎已经消失了。 (2认同)