.NET如何处理范围内的变量

Sim*_*röm 1 .net c#

关于什么是幕后快乐,我只是小心翼翼.我有这个代码,当然它不会编译因为我在if语句中创建了hello变量,后来尝试将其声明为agian.为什么.NET不允许我这样做?在这些场景背后可能会让hello变量与声明中的那个相互干扰.

如果变量是在if语句之前声明的话,为什么这可能会干扰它是非常直截了当的.

    public void Test() {
        if (true)
        {
            var hello = "";
        }
        var hello = "";

        Console.Write(hello);
    }
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

名称的声明空间扩展到填充整个块,甚至在声明之前.
请参阅Eric Lippert的博客文章.