2012-09-25 8 views
7

Wiem, że kod Java jest kompilowany do kodu bajtowego, który jest wykonywany przez maszynę JVM.Czy kod C# jest kompilowany do natywnych plików binarnych?

Co jest w przypadku C#? Zauważyłem, że aplikacje napisane w języku C# mają rozszerzenie .exe, co sugerowałoby, że są natywnymi instrukcjami maszyny. ale czy tak naprawdę jest?

+0

Powinno to wyjaśnić. http://en.wikipedia.org/wiki/List_of_CLI_languages ​​ – km1

+0

Z ngen (podobnie jak Java z jit) – Cynede

Odpowiedz

14

nr

Podobnie jak Java, C# jest kompilowany do języka pośredniczącego (tzw MSIL lub CIL).

W przeciwieństwie do Java, IL jest przechowywany w plikach EXE, które mają wystarczający kod EXE, aby wyświetlić okno dialogowe z prośbą o zainstalowanie .Net.

+1

Mm. Nieco mylące, aby po prostu powiedzieć "Nie" na "Czy skompilowany jest kod C#". Oczywiście, jest skompilowany. Instrukcje do CLI. Po prostu nie (bezpośrednio) w natywny kod. Oczywiście, w końcu są one (just-in-time) skompilowane do natywnego kodu, tak czy inaczej. – sehe

+0

@sehe: Mówię "nie" do ostatniej linii w pytaniu. – SLaks

+0

Edytowałem tytuł pytania, aby uniknąć niedopasowania tam :) – sehe

2

kod C# jest skompilowany do MSIL. lubi kod bajtowy java. msil zostanie przekonwertowany na isntrctions maszyny w czasie wykonywania.

1

kod C# jest kompilowany do MSIL, MSIL jest załatwione przez .NET CLR

2

C# kompilacja odbywa się w tych dwóch etapów:

1. Conversion from C# to CIL by the C# compiler 

2. Conversion from CIL to instructions that the processor can execute. 

Składnik (just in time) wykonuje tę kompilację na czas pracy od CIL do kodu maszynowego

Powiązane problemy