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

时间:2010-09-28 15:05:57

标签: c# arrays multidimensional-array initialization array-initialization

string[][] Tablero = new string[3][3];

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

12 个答案:

答案 0 :(得分:104)

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

您也可以使用数组初始值设定语法在同一行中实例化它,如下所示:

string[,] Tablero = new string[3, 3] {{"a","b","c"},
                                      {"d","e","f"}, 
                                      {"g","h","i"} };

答案 1 :(得分:50)

你可能想要这个:

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

这会创建一个类似矩阵的数组,其中所有行的长度都相同。

示例中的数组是所谓的jagged array,即数组的数组,其中元素的大小可以不同。必须以不同的方式创建锯齿状数组:

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

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

string[,] Tablero = new string[,]
{
    {"1.1","1.2", "1.3"},
    {"2.1","2.2", "2.3"},
    {"3.1", "3.2", "3.3"}
};

如果是锯齿状阵列:

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"}
};

答案 2 :(得分:12)

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

string[][] jaggedStrings =  {
new string[] {"x","y","z"},
new string[] {"x","y"},
new string[] {"x"}
};

在您的情况下,您需要常规阵列。见上面的答案。 More about jagged arrays

答案 3 :(得分:10)

我认为你正在寻找这个:

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

锯齿状数组的语法是:

        string[][] Tablero = new string[3][];
        for (int ix = 0; ix < 3; ++ix) {
            Tablero[ix] = new string[3];
        }

答案 4 :(得分: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];
            }

简而言之,锯齿状阵列既快又具有直观的语法。有关详细信息,请参阅:this Stackoverflow question

答案 5 :(得分:8)

试试这个:

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

查看http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx

答案 6 :(得分:5)

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

答案 7 :(得分:5)

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

string[,] tablero = new string[3,3].

答案 8 :(得分:5)

string[][] 不是二维数组,它是一个数组数组(锯齿状数组)。那是不同的。

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

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

如果你真的想要一个jagged array,你需要像这样初始化它:

string[][] tablero = new string[][] { new string[3], 
                                      new string[3], 
                                      new string[3] };

答案 9 :(得分:4)

也可以像这样初始化一个3x3(多维)数组(你已经声明了它):

string[,] Tablero =  {
                        { "a", "b", "c" },
                        { "d", "e", "f" }, 
                        { "g", "h", "i"} 
                     };

答案 10 :(得分:3)

你也可以写下面的代码。

Array lbl_array = Array.CreateInstance(typeof(string), i, j);

其中'i'是行数,'j'是列数。 使用'typeof(..)'方法,您可以选择数组的类型,即int,string,double

答案 11 :(得分:2)

在C#here中使用数组有很多例子。

我希望这会有所帮助。

谢谢, 达米安