次の方法で共有


5 準拠

準拠は、次の対象ユーザーにとって重要です。

  • C# 実装の設計、実装、または保守を行うユーザー。
  • C# 実装の調達を希望する政府機関または商用エンティティ。
  • C# 準拠テスト スイートを提供することを望むテスト組織。
  • ある C# 実装から別の C# 実装にコードを移植するプログラマ。
  • Standard C# を教える教師。
  • Standard C# について記述する作成者。

そのため、準拠は最も重要であり、この仕様の大部分は、C# の実装と C# プログラムを準拠させる特性を指定することを目的としています。

要件を指定するこの仕様のテキストは、 normativeと見なされます。 この仕様の他のすべてのテキストは 情報のみを目的としてです。 特に明記されていない限り、すべてのテキストは規範的です。 標準テキストは、さらに 必須 および conditional カテゴリに分割されます。 条件付きで規範的なテキスト 特徴とその要件を指定します。この機能は省略可能です。 ただし、その機能が提供されている場合、その構文とセマンティクスは指定されたとおりである必要があります。

未定義の動作は、この仕様では "未定義の動作" という単語によってのみ示されます。

準拠するプログラムは、必要に応じて、この仕様で指定された言語の機能のみを使用しなければなりません。 (これは、厳密に準拠しているプログラムが条件付きで規範的な機能を使用できないことを意味します)。指定されていない、未定義、または実装で定義された動作に依存する出力は生成されません。

C# の 実装 は、厳密に準拠しているプログラムを受け入れる必要があります。

C# の準拠する実装では、この仕様の規範的 (ただし条件付き規範的ではない) 部分で説明されているすべての型、値、オブジェクト、プロパティ、メソッド、およびプログラム構文とセマンティクスを提供し、サポートする必要があります。

C# の準拠実装では、Unicode 標準に準拠した文字を解釈する必要があります。 準拠する実装では、UTF-8 エンコード形式でエンコードされたコンパイル 単位を受け入れる必要があります。

C# の準拠する実装では、条件付きコンパイルによってスキップされるグループの一部でない限り、#error 前処理ディレクティブを含むソースを正常に翻訳することはできません。

C# の準拠する実装では、ソース プログラムが構文の規則に違反している場合、または否定的な要件 ("shall" または "shall not" または "error" または "warning" の要件として定義されている場合) に少なくとも 1 つの診断メッセージが生成されます。ただし、その要件に "no diagnostic is required" とマークされている場合を除きます。

C# の準拠する実装では、厳密に準拠するプログラムの動作を変更しない限り、この仕様で説明されているもの以外の追加の型、値、オブジェクト、プロパティ、およびメソッドを提供できます。 この仕様に従って不適切な形式の拡張機能を使用するプログラムを診断するには、準拠する実装が必要です。 ただし、それを行うと、このようなプログラムをコンパイルして実行できます。 (拡張機能を持つ機能は、準拠する実装では、この仕様で明示的に予約されている識別子以外の識別子を予約しないということです)。

C# の準拠する実装には、実装で定義されたすべての特性とすべての拡張機能を定義するドキュメントが添付されている必要があります。

C# の準拠する実装では、Annex C に記載されているクラス ライブラリをサポートする必要があります。このライブラリは、この仕様のリファレンスに含まれています。

コンフォーム プログラムは、準拠した実装で許容されるプログラムです。 (このようなプログラムは、拡張機能または条件付きで規範的な機能を含む場合があります。