使用二维数组变量的 switch 语句中的 C# 错误
C# error in switch statement using an 2d array variable
如果在 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"
谢谢
您只需要创建新数组:
string[,] myArray = new string[2, 2];
...
myArray = new string[2,2] { { "1", "1" }, { "1", "1" } };
您最近问过类似的问题:C# : error using if/switch : "Local variable already defined in this scope"
我以为现在就清楚了。
如果不能在声明的同一行中初始化它,则不能使用集合初始化语法(一行)。
但逻辑似乎是您根本不需要开关。那为什么不呢:
string val = x.ToString();
string[,] myArray = { {val, val}, {val, val} };
如果在 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"
谢谢
您只需要创建新数组:
string[,] myArray = new string[2, 2];
...
myArray = new string[2,2] { { "1", "1" }, { "1", "1" } };
您最近问过类似的问题:C# : error using if/switch : "Local variable already defined in this scope"
我以为现在就清楚了。
如果不能在声明的同一行中初始化它,则不能使用集合初始化语法(一行)。
但逻辑似乎是您根本不需要开关。那为什么不呢:
string val = x.ToString();
string[,] myArray = { {val, val}, {val, val} };