2

いくつかの .net 理論の質問: 実際に標準化されているライブラリはどれですか? 32 ビット整数やこのすべての低レベル情報などを指定する Common Type System があることは知っていますが、Common Language Specification と Base Class Libraries のステータス/関係について混乱しています。

システムには、System.Object、System.ValueType、System.Exception という基本的な型がいくつかあります。しかし、System.String や、.Length、.StartsWith、string.IsNullOrEmpty などのメソッド/プロパティについてはどうでしょうか?

これらは標準の一部ですか? ECMA-335 は、CLS 準拠の .net ランタイムを実装するのに十分ですか?

PS: 私は、人々が日常的に使用する多くの機能が標準に準拠していないことを知っていますが、Microsoft 独自の .net Framework 実装の一部です。これは、サポートされていないオペレーティング システムで既存のアプリを実行することに関するものではありません。そのためには Mono を検討します。これは実際には、.net のコアを構成するもの、.net 標準ライブラリとは何かについての理論的な問題です。

4

2 に答える 2

2

Ecma 仕様のパーティション IV を確認してください。「標準ランタイム ライブラリ」を定義します。ただし、単一の「標準ライブラリ」はありません。カーネル プロファイルとコンパクト プロファイルの 2 つのプロファイルと、7 つのライブラリが定義されています。コンパクト プロファイルは、カーネル プロファイルのスーパー セットです。それが定義するライブラリのいくつかは「オプション」であり、どちらのプロファイルにも関連付けられていません。また、"オプション" であり、すべての実装でカバーされていない可能性があるいくつかの CLR 機能も識別します。

Ecma 仕様で定義されている BCL (基本クラス ライブラリ) は、Ecma 仕様で定義されている 7 つのライブラリの 1 つにすぎません。

CLS (共通言語仕様) は、言語の相互運用性を最大限に促進する API 設計の一連のガイドラインです。

ecma 仕様のパーティション I のセクション 7.2 で定義されているように、CLS 準拠の 3 つのビューがあります。

  1. CLS 準拠のフレームワークは、CLS 準拠のコードを含むライブラリです。
  2. CLS コンシューマーは、任意の CLS 準拠フレームワークで定義された任意の機能へのアクセスを許可する言語 (またはその他のツール) です。
  3. CLS エクステンダーは、プログラマーが CLS 準拠のフレームワークを使用および拡張できるようにする言語 (またはその他のツール) です。

これらのそれぞれの正確な要件は、ECMA 仕様に記載されています。

いずれにせよ、「CLS 準拠の .NET ランタイム」という概念はありません。「.NET ランタイム」は、ランタイム システムのすべてで構成されています。ただし、CLS への準拠は、一般に公開されているアイテムのインターフェイスのみに関係しています。

于 2011-05-11T00:53:29.123 に答える
1

私の知る限り、コアはmscorlib.dllにあるすべてのものです。

mscorlib.dll を Reflector で (まだ無料ですが) 見て、含まれているものと含まれていないものを確認してください。または、関心のあるタイプのMSDN .NET Framework クラス ライブラリ ドキュメントを参照してください。ドキュメントには、各タイプがどのアセンブリに含まれているかが示されています。

System.String は含まれていますが、たとえば System.Uri は含まれていません。

のような基本的なジェネリック コレクションList<T>は含まれていますがQueue<T>、含まれStack<T>ていません。

于 2011-03-23T08:54:49.653 に答える