I\'ve spent my professional life as a C# developer. As a student I occasionally used C but did not deeply study it\'s compilation model. Recently I jumped on the bandwagon a
It uses the metadata from the reference assemblies. That contains a full type declaration, same thing as you'd find in a header file.
It being a two-pass compiler accomplishes something else: you can use a type in one source file before it is declared in another source code file.