2

早些时候我遇到了一个问题,我发现 C# 有一些奇怪的行为。

这将引发错误:

 public class MyClass
 {
    public int MyMethod()
    {
        for(int x = 0; x < 1; x++)
        {
           for(int x = 0; x < 1; x++)
           {
           }
        }
    }
 }

但这不会:

public class MyClass
{
    public int x = 0;
    public int MyMethod()
    {
        for(int x = 0; x < 1; x++)
        {
        }
    }
}

相反,当 for 循环结束时, x 将被设置回 0。如果您有 oneint x和 one ,这也将起作用bool x

为什么这行得通?

4

1 回答 1

7

在第一种情况下,您在同一范围内定义相同的变量两次,这是一个错误。

在第二种情况下,您在循环范围内定义了一个局部变量,它将隐藏该x范围内的类成员。在该范围之外, x 将引用类成员,但在它内部将引用循环迭代变量。

于 2013-10-16T20:12:37.120 回答