在遇到那个类之前,编译器究竟会知道未知类是否存在?

时间:2015-02-27 05:28:06

标签: c#

我试图在主类存在的类之后声明所有类。编译器没有显示错误?怎么会?见下面的例子

class Program    
{    
public static void Main(string args[])    
{    
A a =new A();    
}    
}    
class A    
{    
//this is class A    
}    

1 个答案:

答案 0 :(得分:2)

因为编译器会在尝试检查标识符的有效性之前解析整个文件以发现所有类型的定义。因此,你可以有前瞻性参考。

对于所有语言都不是这种情况,C要求在使用它时定义每个标识符。从而允许编译器在进行时生成代码。由于过去机器上的内存要少得多,因此可以用最少的资源编译大型代码库。现代机器有足够的内存,因此可以缓存更多信息。