为什么这在Java中有效,而在C#中无效?a.k.a.作用域在C#中是如何工作的

本文关键字:何工作 工作 作用域 有效 Java 而在 为什么 无效 | 更新日期: 2023-09-27 18:03:45

可能重复:
关于C#变量作用域与其他语言的问题

从这里开始,但这和我今天工作时遇到的问题是一样的。我不是C#程序员,我在学习。

Java:

class Test
{
    double x;
    void F(boolean b) {
        x = 1.0;
        if (b) {
            int x = 1;
        }
    }
}

C#:

class Test
{
    double x;
    void F(bool b) {
        x = 1.0;
        if (b) {
            int x = 1;//error
        }
    }
}

为什么这在Java中有效,而在C#中无效?a.k.a.作用域在C#中是如何工作的

简短的版本是,在一个块中,一个变量名只能引用一个东西。

Eric Lippert写过关于这个主题的博客文章Simpe的名字并不那么简单,Scope vs Declaration Space vs Lifetime