O processo de compilação de um código escrito em .Net é diferente da compilação tradicional, que gera o chamado código de maquina para cada arquitetura especifica.

Por exemplo, um código escrito em C é compilado para uma determinada arquitetura (x86, x64, ARM).
Já um componente escrito em C# não é compilado para uma arquitetura específica, e sim para uma linguagem intermediária (IL).

A IL serve para ser executada no CLR, o Common Language Runtime. Este sim tem o papel de interpretar e compilar o código para o código de maquina da arquitetura em que esta sendo executado.
Portanto, qualquer linguagem que utiliza as bibliotecas .Net possuem interoperabilidade, pois serão compiladas para uma linguagem comum, a IL e então executadas no CLR.

Outra característica da IL é que a portabilidade dos componentes .Net são possíveis até mesmo para plataformas que ainda não foram inventadas, ja que isso é uma questão de adicionar uma feature ao CLR, dispensando alterações no código fonte.
Também, qualquer melhoria na geração de código do CLR, relacionada a segurança ou a performance, se aplica a códigos escritos antes dessas melhorias existirem.

É dessa forma que uma classe escrita em C# pode consumir uma classe escrita em VB, por exemplo. Porque ambas as classes serão traduzidas para a IL, e o CLR irá compilar e executar a IL.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store