C#:使用if / switch时出错:“已在此范围内定义的局部变量”
参见英文答案 >
C# declare variable into if statement????????????????????????????????????4个
我是C#的新手,我的问题可能很简单,但我不明白: 我需要根据条件为数组赋值. 但是,如果我使用“switch”,那么我会收到错误“已在此范围内定义的局部变量”. 如果我使用“if”然后我得到一个错误“在当前上下文中不存在” 例: int x; x=1; //1: //a) does work... if (x==1) { string[,] arraySpielfeld2d = { {"1","1" },{"1","1" } }; } else { string[,"1" } }; } //b) but this does not work MessageBox.Show(arraySpielfeld2d[0,0]); //error: does not exist in current context //2) doesn't work at all switch (x) { case 1: string[,"1" } }; break; case 2: string[,] arraySpielfeld2d = //error:Local variable already defined in this scope { {"2","2" },{"2","2" } }; break; } 所以使用“if”我至少可以填充数组(1a)……但是我无法访问数组元素(1b)…… 那么我如何根据条件(如果/ switch)分配然后访问数组的值? 我使用Visual Studio 2010. 谢谢 解决方法
你在这里遇到的是变量的范围.
在块{}内声明的任何变量仅在该块中可见.块后面的任何代码都无法看到它.因此,你的if-using代码声明了变量,但它在这两个分支中这样做,所以后面的代码根本看不到它. 解决方案是在if之前声明变量,在块中分配它,然后你可以在之后使用它(只是确保你没有留下它可以最终取消分配的路径,除非你已经为这种可能性做好了准备你用吧). 切换代码不起作用,因为整个语句只有一个块,并且在其中声明了两次相同的变量名. 它仍然具有相同的范围问题,因为该变量在开关块外部不可见.同样,解决方案是首先声明变量,然后在开关内分配变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |