Q1) なぜ C# は最初に IL にコンパイルされ、次に実行時に JIT にコンパイルされ、仮想マシン上で実行されるのですか (?)。それとも、ネイティブのマシンコードに準拠した JIT ですか?
Q2) 2 番目が正しい場合 (ネイティブ マシン コードに準拠した JIT)、コードが実行される .NET サンドボックスはどこにありますか?
Q3) また、そもそもコードを IL にコンパイルする理由を教えてください。常にネイティブ マシン コードにコンパイルしないのはなぜですか? ngenと呼ばれるMSのツールがありますが、なぜそれがオプションなのですか?