One of the most fascinating features of .NET platform is its language independence. The major reasons behind its language independence are:
-Common Language Specifications (CLS): Every language that is targeting the CLR (i.e. .NET compatible languages such as C#, VB, J#, etc.) should generate the same type of CIL (Intermediate Language) code. Due to this specification the CIL code that is generated after compiling the C# source code can be consumed by VB and vice versa and this is applicable even for all the other .NET compatible languages.
-Common Type System (CTS): Every .NET compatible language defines its types based upon its individual standards. For example C# defines integer type as "int" whereas VB defines it as "integer". But for .NET Runtime int is an int, whether it may be C# type or VB type. This enables C# code to be consumed by VB and vice versa.
-Consumption of BCLs: All the BCLs are written in C#. But they are consumed by every .NET Compatible languages.
All the above three features prove that .NET is really a definition for language independence.