Why c# compiler generates a compile error?
本问题已经有最佳答案,请猛点这里访问。
我有以下代码
1 2 3 4 5 | using(some code) { var b = .... } var b = ... |
不能在此范围内声明名为"b"的局部变量
好的,编辑
1 2 3 4 5 | using(some code) { var b = .... } b = ... |
"块的局部变量声明空间包括任何嵌套块。因此,在嵌套块中,不能声明与封闭块中的局部变量同名的局部变量。
你能做到这一点吗?
1 2 3 4 5 | for (int i = 0; i < 10; i++) { int j = 1; } int j = 2; |
答案是否定的,这意味着它在任何地方都非常一致。现在它引出了一个问题:为什么。这个问题的答案是,在同一个局部变量声明空间或嵌套的局部变量声明空间中有两个同名的局部变量是非法的。在上述情况下,j的声明在同一嵌套范围内。
正确的代码应该是:
1 2 3 4 5 6 | var b = something; using(some code) { b = smth; } b = smth; |
不能在该块之外的块()内使用声明的变量。