Meines Wissens habe ich bisher gedacht, dass C # eine kompilierte Sprache ist und war. Ich habe kürzlich angefangen, Unity3d zu studieren, und festgestellt, dass sie C # als Option für die Skripterstellung und Interaktion mit Spielobjekten über ihre API (zusammen mit JavaScript und einigen anderen Alternativen) angeben.
Wie wird das gemacht? Wird C # tatsächlich ausgeführt oder handelt es sich um eine Abstraktion, die unter dem Deckmantel in eine andere Skriptsprache konvertiert wird? Es scheint mir, dass für diese Funktionalität eine Art Interpretation stattfindet.
Antworten:
Unity nutzt Mono hinter den Kulissen. Jedes Mal, wenn Sie Änderungen an Ihren C # / UnityScript-Skripten vornehmen, wird der Code fast sofort neu kompiliert.
Wenn Sie in das Datenverzeichnis eines eigenständigen Unity-Players schauen, können Sie sehen, dass alle Skripte in Assembly-CSharp.dll oder ähnlichem kompiliert wurden.
Also ja, das C # wird kompiliert.
quelle
Erstens sind Skriptsprachen nicht unbedingt interpretierte Sprachen. Einige Skriptsprachen wie Lua und Python können entweder JIT-kompiliert oder interpretiert werden.
Und was die Frage selbst betrifft: Weil C # eine Skriptsprache ist, aber Microsoft gute Arbeit leistet, damit sie nicht als solche aussieht.
C # bietet alles, was eine Skriptsprache benötigt: Dynamisches Tippen, JIT-Kompilieren statt statisches Kompilieren, läuft in einer virtuellen Maschine ...
quelle