2

.NET について、私が正しいかどうかを尋ねたいだけです。つまり、.NET は、新旧の Windows 機能を簡単に実装できる新しいフレームワークです。これも「バイトコード」にコンパイルされるという点で Java に似ていますが、その名前は Common Language Infrastructure (CLI) です。この言語は .NET Framework によって解釈されるため、.NET を使用したプログラミングによって生成されたコードを CPU で直接実行することはできません。現在、CLI にコンパイルできる言語はほとんどありません。まず、Microsoft が開発した C# であり、他の J# や C++ ではありませんでした。これは一般的に正しいと思いますが、少なくとも正しく理解していることを願っています。

しかし、まだ足りないのは、C# でコンパイルされたコードをマシン コードに記述できるかということです。また、Visual Studio 2005 を使用している場合、Win32 プロジェクトを選択するとマシン コードにコンパイルされるため、このアプリを実行するために必要なのは Windows ダイナミック リンク ライブラリだけです。これは、静的ライブラリ コードがリンク段階でアプリに実装されるためです。これらのダイナミック リンク ライブラリは、すべての Windows インストールに実装されているか、DirectX インストールによって提供されます。

しかし、Visual Studio 2005 で CLR を選択すると、アプリが CLI コードにコンパイルされ、最初に .NET フレームワークが実行され、マシン コードではないため、.NET フレームワークがそのプログラムを実行します。

それで、私は正しいですか?インターネットでこれらの情報を読むことができるのでお願いしますが、私がそれを正しく理解しているかどうかを教えてくれる人がいません。ありがとう。

4

2 に答える 2

2

.NET の最初の IDE は 2002 年に登場したため、.NET は 8 年前のものです。永遠に ;)

.NET は、C#、Basic、J#、および C++ で始まりました。たとえば、動的言語 IronRuby の分野では、他の多くの言語が続きました。C# と Basic では、.NET フレームワークを必要としないコードを生成するオプションはありませんが、C++ ではそのオプションがあります。いいえ、標準ツールでは C# をマシン コードにコンパイルできません。

ランタイムを最適化することがあります (アセンブリを JIT する前に、ngen を見てください)。これはジットされており、常に解釈されるわけではないため、たとえば VB スクリプトよりもはるかに高速です。これは通常、毎回実行されるのではなく、1 つのアセンブリを初めて実行するとき、またはアプリケーションのインストール中に ngen を使用して実行されます。

HTH、-さ

于 2010-03-16T10:09:20.197 に答える
2
  • CLI は .NET フレームワークによって解釈されませんが、通常はコンパイルされます。純粋な解釈は遅すぎるでしょう。
  • C#、J#なども同時にやってきました。実際、J# は Microsoft J++ に由来するので、以前からあったと言えます。C++ も以前はありましたが、Managed C++ (現在: C++/CLI) を意味する可能性があります。それは同時並行で行われたと思います。microosft には 2 ~ 3 人以上の人が働いています ;)
  • C# を機械語に書くことはできません。win32 プロジェクトはネイティブ C++ (つまり、.NET ランタイムを使用しないバージョン) です。
于 2010-03-16T10:11:14.360 に答える