C#, C++.NET, VB.NET HANNO LA STESSA potenza espressiva e LE STESSE PERFORMANCE.
Non c'e' NESSUNA differenza tra i diversi linguaggi. E' SOLO una questione di esperienza pregressa.
In .NET il linguaggio di riferimento e' C#, QUINDI conviene mantenersi su questo linguaggio. Il passaggio ad un'altro linguaggio E' ASSOLUTAMENTE INUTILE.
La interoperabilita' di C# con le DLL e' ESATTAMENTE LA STESSA di "C++.NET".
"C++.NET" NON E' "C++": le sintassi sono mooooolto simili, ma quello che genera il compilatore e' MOOOLTO diverso. C++.NET genera codice CL, lo stesso di C#, il compilatore "C++" genera codice BINARIO, che usa direttamente l'hardware (CPU).
Se vogliamo, "C++.NET" e' anche piu' ""sporco"" del "C++" puro, perche' in .NET hai il garbage collector, mentre in 'C++" la memoria la devi gestire tu. Quindi hanno introdotto tutta una serie di estensioni al linguaggio originale per poter gestire questa "situazione".
Nel tuo caso, AL PIU' di serve scrivere librerie in C (NON "C++"), con cui generare delle DLL da usare in C#.
Ma nel 99.99999999% dei casi non ti serve nemmeno, perche' puoi fare TUTTO direttamente in C#
Chiamare codice C# DA codice scritto in C oppure in C++ (NON "C++.NET") si dovrebbe poter fare, ma non mi ricordo di averlo visto fare, e se lo si fa,lo si fa per motvi ULTRA specifici.