2016-02-17 1 views
-2

J'ai lu divers articles et questions sur les versions C# (y compris la réponse de Jon Skeet ici sur SO). Cependant, je ne pouvais pas comprendre une chose simple (j'espère). Comment les versions CLR, .NET et C# sont-elles liées? Par exemple, est-il possible d'utiliser le compilateur C# qui prend en charge C# 6 et exécuter le code IL résultant sous le CLR 1? Par exemple, lorsque le support de async/await a été ajouté, le CLR a-t-il dû changer ou n'était-il pas nécessaire juste parce que async/await compile dans la plain IL? Je suis assez familier avec les bases de .NET, cependant, je ne comprends pas quels changements sont faits en C# avec chaque version. Comment exactement le support de async/await, lambdas et d'autres choses est-il ajouté à la langue? Ont-ils besoin des changements au framework .NET ou au CLR?Versions en langage C# et CLR

This answer dit C# 4 nécessite CLR 4. Qu'est-ce qu'on entend par exige? Comme je l'ai compris, certaines fonctionnalités fonctionneront toujours sous la version inférieure du CLR.

+0

[This] (http://stackoverflow.com/a/247623/3159635) réponse est un bon point de départ. – AGB

+0

N'ai-je pas mentionné que j'ai parcouru cette réponse et que je connais les versions correspondantes? –

Répondre

2

Si vous compilez avec CLR version X, vous pouvez exécuter votre code uniquement sur cette version. Pour des raisons de compatibilité ascendante, chaque version CLR apporte les anciens CLR sur votre ordinateur. Donc, si vous installez CLR 4, il installera également CLR 2 et CLR 1.

Vous pouvez donc exécuter du code compilé avec CLR 1 sur un ordinateur où CLR 4 a été installé. Mais pas l'inverse.

+0

Il ne répond pas vraiment à ce que je voulais savoir; Je suppose que j'ai choisi une mauvaise formulation pour la question. –