Насколько мне известно, до сих пор я думал, что C # есть и всегда был компилируемым языком. Недавно я начал изучать Unity3d и заметил, что они предоставляют C # в качестве опции для сценариев и взаимодействия с игровыми объектами через их API (наряду с JavaScript и несколькими другими альтернативами).
Как это сделать? C # на самом деле выполняется или это абстракция, которая конвертируется в другой язык сценариев под прикрытием? Мне кажется, что существует какая-то интерпретация этой функциональности.
Ответы:
Unity использует Mono за кулисами. Каждый раз, когда вы вносите изменения в свои скрипты на C # / UnityScript, он почти мгновенно перекомпилирует код.
Если вы посмотрите в каталог данных автономного проигрывателя Unity, то увидите, что он скомпилировал все сценарии в Assembly-CSharp.dll или аналогичную.
Так что да, C # компилируется.
источник
Во-первых, языки сценариев не обязательно являются интерпретируемыми языками. Некоторые языки сценариев, такие как Lua и Python, могут быть JIT-скомпилированы или интерпретированы.
И, что касается самого вопроса: потому что C # является языком сценариев, но Microsoft делает хорошую работу, чтобы он не выглядел как таковой.
В C # есть все, что нужно языку сценариев: динамическая типизация, JIT-компиляция, а не статическая компиляция, запускается на виртуальной машине ...
источник