À ma connaissance, jusqu'à présent, j'ai pensé que C # est et a toujours été un langage compilé. J'ai récemment commencé à étudier Unity3d et j'ai remarqué qu'ils offrent C # comme option pour l'écriture de scripts et l'interaction avec des objets de jeu via leur API (avec JavaScript et quelques autres alternatives).
Comment cela se fait-il? Est-ce que C # est en train d'être exécuté ou est-ce une abstraction qui est convertie dans un autre langage de script sous les couvertures? Il me semble qu'il y a une sorte d'interprétation en cours pour cette fonctionnalité.
Réponses:
Unity utilise Mono dans les coulisses. Chaque fois que vous modifiez vos scripts C # / UnityScript, il recompile le code presque instantanément.
Si vous regardez dans le répertoire de données d'un lecteur d'unité autonome, vous pouvez voir qu'il a compilé tous les scripts dans Assembly-CSharp.dll, ou similaire.
Alors oui, le C # est en cours de compilation.
la source
Premièrement, les langages de script ne sont pas nécessairement des langages interprétés. Certains langages de script tels que Lua et Python peuvent être compilés en JIT ou interprétés.
Et, comme pour la question elle-même: parce que C # est un langage de script, mais Microsoft fait un bon travail pour le faire ne pas ressembler à tel.
C # a tout ce dont un langage de script a besoin: typage dynamique, compilation JIT plutôt que compilation statique, s'exécute dans une machine virtuelle ...
la source