2012-09-25 9 views
7

私はJavaコードがバイトコードにコンパイルされていることを知っています。これはJVMによって実行されます。C#コードはネイティブバイナリにコンパイルされていますか?

C#の場合はどうなりますか?私は、C#で書かれたアプリケーションには、ネイティブのマシン命令であることを示唆する拡張子が.exeであることに気付きました。それは本当にそうですか?

+0

これで深さで、より外観のため、ここで

ルックは説明する必要があります。 http://en.wikipedia.org/wiki/List_of_CLI_languages – km1

+0

ngen(jitと同様のJava) – Cynede

答えて

14

ようなJava、C#は(MSILまたはCILとも呼ばれる)、中間言語にコンパイルされます。

ILは、Javaとは異なり、.Netをインストールするようダイアログボックスを表示するのに十分な実際のEXEコードを持つEXEファイルに格納されています。

+1

Mm。ちょうど "C#コードがコンパイルされています"に "いいえ"と答えるのは紛らわしいビットです。明らかに、それはコンパイルされます。 CLIの指示に。ネイティブコードに直接(直接)アクセスしないでください。明らかに、結局、彼らはいつもネイティブコードにコンパイルされています(ジャストインタイム)。 – sehe

+0

@sehe:質問の最後の行に「いいえ」と言っています。 – SLaks

+0

私はそこに不一致を避けるために質問のタイトルを編集しました:) – sehe

2

c#コードはMSILにコンパイルされます。それはJavaのバイトコードが好きです。 msilは実行時にマシンの制御に変換されます。

1

C#コードをMSILにコンパイルされ、MSILは、.NET CLRによって世話をされに

2

C#のコンパイルが、これらの二つのステップで行われる:

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

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

成分(ジャストインタイム)で、このコンパイルを行いますCILからマシンコードまでの実行時間

3

ファイルが実行可能であることを.exeが示すとします。 C#はJavaと同じようにバイトコードにコンパイルされますが、.NETはこれをCLR実行可能ファイルにラップします。 CLR実行ファイルhttp://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/

+0

ポータブル実行可能ファイルという用語は、.NET固有の用語ではありません。 – Matthew

関連する問題