C# è un buon linguaggio, ma ha un grande svantaggio, ossia è proprietario di Microsoft, gira solo su Windows e Microsoft continua a cambiarlo (e migliorarlo) ma come avvenne in passato con i linguaggi proprietari (non solo Windows) il suo futuro è incerto.
Per imparare io opterei di più verso Java, come in genere consiglio anche in questo forum. È un ottimo linguaggio consolidato, gira su tutte le piattaforme, si può creare un po’ di tutto, è Free e il suo standard è ben consolidato. È un linguaggio moderno fortemente orientato ad oggetti, ma si può usarlo anche per programmazione strutturata.
Ovviamente non voglio lasciare stare il caro, vecchio C, che rimane il linguaggio di scelta per gli smanettoni che vogliono "sporcarsi le mani" in quanto ha accesso libero alla memoria, è ideale per servizi e driver di sistema. Ma è "pericoloso" da usare, è un po’ come imparare a guidare con cambio manuale non sincronizzato :) è difficile, ma una volta imparato puoi guidare di tutto. Il grosso vantaggio è che un linguaggio consolidato, con poche modifiche (relative alle chiamate di sistema) compila in tutte le piattaforme, non andrà mai via di moda e verrà sempre richiesto programmatori che lo sappiano usare. Il grosso svantaggio è l'assenza di Classi, che lo rende quindi un linguaggio strutturale, ma per molti questo è un vantaggio :) a volte è meglio un buon coltello da macellaio che un coltellino multiuso (paragone che si applica a molti linguaggi tipo Python). Per questo motivo esiste la estensione C++, che giudico una "estensione" più che un vero linguaggio, non è proprio un vero linguaggio OOP ma alla fine rimane un ibrido. Continua a possedere i vantaggi del C.
Scegliere un linguaggio non è facile. Chi sta studiando, dovrebbe limitarsi a un linguaggio, imparando i trucchi della programmazione piuttosto che i dettagli del linguaggio stesso. Ecco perché Python è così popolare. Imparare un altro linguaggio non è poi così difficile. Ben diverso quando lo si fa per professione, uno si deve per forza di cosa specializzare in un aspetto tipico della programmazione e quindi scegliere un linguaggio favorito. Ormai ben poche aziende vogliono un "generalista" (ossia uno che sappia fare un poco di tutto) bensì cercano programmatori ben specializzati (basta fare un salto nei siti Microsoft e Google e leggere le offerte di lavoro per rendersene conto).