As mentioned in this article, the C # compiler performs "Two Pass", i.e.
First, it calculates metadata: top-level material, such as namespaces, classes, structures, enumerations, interfaces, delegates, methods, type parameters, formal parameters, constructors, events, attributes, etc.,
The second pass computes IL: the code that goes in the bodies of the method, the body of the constructor, etc.
# C/++, , , .. , , .. , . # , Two Pass .