0

下面的 C# 代码被愉快地接受了,我相信在 Java 中也是如此,而 C++ 编译器会拒绝等价,因为 Foo 在声明之前使用:

class Program
{
    static void Main(string[] args)
    {
        Foo foo;
    }
}

class Foo
{
    int x;
}

这在语法和解析方面是如何工作的?具体来说,当编译器看到第一次出现的 Foo 时,它如何知道将其解析为声明而不是其他内容?它是通过两个标识符的并置,还是其他一些规则?

4

0 回答 0