首页 > 解决方案 > 无法在c#中的块范围之外声明同名的局部变量

问题描述

我有一个非常简单的用例:

class Program
{
    private static void Test()
    {
        {
            const bool thing = false;
        }

        bool thing = true;
    }

    static void Main()
    {
        Console.WriteLine("Hello, World!");
    }
}

编译此代码时出现此错误:

main.cs(12,14):错误 CS0136:不能在此范围内声明名为“thing”的局部变量,因为它会给“thing”赋予不同的含义,“thing”已在“child”范围内用于表示某事别的

为什么第二个声明会thing干扰第一个声明?我来自沉重的 C++ 背景,所以我希望这在语义上是相同的:两者按范围分隔。在我看来,const bool thing外部范围不应该使用。我在这里想念什么?

请注意,我已尽力在 google 上搜索,但不幸的是,我不知道要搜索的正确术语,因此我无法找到其他人尝试此操作的示例。

注意我在 .NET Framework 4.8 上使用 C# 版本 8。

标签: c#

解决方案


推荐阅读