使用2d数组变量的switch语句中的C#错误

时间:2015-01-09 14:52:09

标签: c# arrays

如果在switch语句中为(数组)变量赋值有问题。

我有一个使用" Temp"像myArrayTemp1和myArrayTemp2这样的变量。 但是我想知道为什么我不能使用以下代码。

我不确定这是否与变量的范围有关...所以这是我的代码:

    int x;
    x=1;


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


        switch (x)
        {
            case 1:
                string[,] myArrayTemp1 = { { "1", "1" }, { "1", "1" } };  //is OK
                myArray = myArrayTemp1;                                   //is OK

                myArray =  { { "1", "1" }, { "1", "1" } };                //error
                break;

            case 2:
                string[,] myArrayTemp2 = { { "2", "2" }, { "2", "2" } }; //is OK
                myArray = myArrayTemp2;                                  //is OK

                myArray =  { { "2", "2" }, { "2", "2" } };                //error
                break;

        }

MessageBox.Show ("myArray:" + myArray[0,0]);

我想摆脱myArrayTemp1和myArrayTemp2并在case块中为myArray赋值。 我需要使用myArray = {{" 1"," 1" },{" 1"," 1" }};符号而不是myArray [x,y] =" 1"

谢谢

2 个答案:

答案 0 :(得分:1)

您只需要创建新数组:

string[,] myArray = new string[2, 2];
...
myArray =  new string[2,2] { { "1", "1" }, { "1", "1" } };

答案 1 :(得分:0)

您最近提出过类似的问题:C# : error using if/switch : "Local variable already defined in this scope"

我认为现在很清楚。

如果您无法在声明的同一行中初始化它,则无法使用集合初始化程序语法(一行)。

但逻辑似乎是你根本不需要开关。那么为什么不呢:

string val = x.ToString();
string[,] myArray = { {val, val}, {val, val} };