.NET は、コードを実行する共通言語ランタイムと呼ばれるランタイム環境を提供し、開発プロセスを容易にするサービスを提供します。
コンパイラとツールは、共通言語ランタイムの機能を公開し、マネージド実行環境からメリットのあるコードを記述できるようにします。 ランタイムを対象とする言語コンパイラを使用して開発するコードは、マネージド コードと呼ばれます。 マネージド コードは、クロス言語統合、クロス言語例外処理、セキュリティ強化、バージョン管理とデプロイのサポート、コンポーネント操作用の簡略化されたモデル、デバッグおよびプロファイリング サービスなどの機能からメリットを得られます。
注
コンパイラとツールは、型システム、メタデータの形式、ランタイム環境 (仮想実行システム) がすべてパブリック標準である ECMA 共通言語インフラストラクチャ仕様によって定義されているため、共通言語ランタイムが使用できる出力を生成できます。 詳細については、「 ECMA C# と共通言語インフラストラクチャの仕様」を参照してください。
ランタイムがマネージド コードにサービスを提供できるようにするには、言語コンパイラがコード内の型、メンバー、および参照を記述するメタデータを出力する必要があります。 メタデータはコードと共に格納されます。すべての読み込み可能な共通言語ランタイムポータブル実行可能ファイル (PE) にはメタデータが含まれています。 ランタイムはメタデータを使用して、クラスの検索と読み込み、メモリ内のインスタンスのレイアウト、メソッド呼び出しの解決、ネイティブ コードの生成、セキュリティの適用、実行時コンテキスト境界の設定を行います。
ランタイムは、オブジェクト レイアウトを自動的に処理し、オブジェクトへの参照を管理し、使用されなくなったときに解放します。 この方法で有効期間が管理されるオブジェクトは、マネージド データと呼ばれます。 ガベージ コレクションにより、メモリ リークやその他の一般的なプログラミング エラーが排除されます。 コードが管理されている場合は、.NET アプリケーションでマネージド データ、アンマネージド データ、またはマネージド データとアンマネージド データの両方を使用できます。 言語コンパイラはプリミティブ型などの独自の型を提供するため、データが管理されているかどうかを常に把握したり知る必要がない場合があります。
共通言語ランタイムを使用すると、オブジェクトが言語間で対話するコンポーネントとアプリケーションを簡単に設計できます。 異なる言語で記述されたオブジェクトは相互に通信でき、動作を緊密に統合できます。 たとえば、クラスを定義し、別の言語を使用して元のクラスからクラスを派生させたり、元のクラスのメソッドを呼び出したりできます。 クラスのインスタンスを、別の言語で記述されたクラスのメソッドに渡すこともできます。 ランタイムを対象とする言語コンパイラとツールは、ランタイムによって定義された共通の型システムを使用するため、この言語間統合が可能です。 新しい型の定義と、型の作成、使用、永続化、およびバインドに関するランタイムの規則に従います。
メタデータの一部として、すべてのマネージド コンポーネントは、作成されたコンポーネントとリソースに関する情報を伝達します。 ランタイムは、この情報を使用して、コンポーネントまたはアプリケーションに必要なすべての指定されたバージョンがあることを確認します。これにより、依存関係が満たされていないためにコードが中断する可能性が低くなります。 登録情報と状態データはレジストリに格納されなくなり、確立と保守が困難になる可能性があります。 代わりに、定義した型とその依存関係に関する情報は、メタデータとしてコードと共に格納されます。 このように、コンポーネントのレプリケーションと削除のタスクは複雑ではありません。
言語コンパイラとツールは、開発者にとって便利で直感的な方法でランタイムの機能を公開します。 ランタイムの一部の機能は、ある環境では別の環境よりも目立つ場合があります。 ランタイムのエクスペリエンスは、使用する言語コンパイラまたはツールによって異なります。 たとえば、Visual Basic 開発者の場合、共通言語ランタイムでは、Visual Basic 言語のオブジェクト指向機能が以前よりも多いことがわかります。 ランタイムには、次の利点があります。
パフォーマンスの向上。
他の言語で開発されたコンポーネントを簡単に使用する機能。
クラス ライブラリによって提供される拡張可能な型。
オブジェクト指向プログラミングの継承、インターフェイス、オーバーロードなどの言語機能。
マルチスレッドでスケーラブルなアプリケーションの作成を可能にする、明示的なフリー スレッド処理のサポート。
構造化例外処理のサポート。
カスタム属性のサポート。
ガベージ コレクション。
型の安全性とセキュリティを強化するために、関数ポインターの代わりにデリゲートを使用します。 デリゲートの詳細については、「 共通型システム」を参照してください。
CLR バージョン
.NET Core および .NET 5 以降のリリースには、単一の製品バージョンがあります。つまり、別の CLR バージョンはありません。 .NET Core のバージョンの一覧については、「 .NET Core のダウンロード」を参照してください。
ただし、.NET Framework のバージョン番号は、含まれている CLR のバージョン番号に必ずしも対応するとは限りません。 .NET Framework のバージョンとそれに対応する CLR バージョンの一覧については、「 .NET Framework のバージョンと依存関係」を参照してください。
関連資料
タイトル | 説明 |
---|---|
マネージド実行プロセス | 共通言語ランタイムを利用するために必要な手順について説明します。 |
自動メモリ管理 | ガベージ コレクターがメモリを割り当てて解放する方法について説明します。 |
.NET Framework の概要 | 共通型システム、言語間の相互運用性、マネージド実行、アプリケーション ドメイン、アセンブリなど、.NET Framework の主要な概念について説明します。 |
共通型システム | 言語間統合をサポートするためにランタイムで型を宣言、使用、管理する方法について説明します。 |
.NET