コンパイラが指定した中間言語 (IL) 修飾子を出力するために、これらの属性をコードに追加します。 これらの属性は、対応する IL 修飾子を出力に含むようにコンパイラに指示します。
C# 言語リファレンスには、C# 言語の最新リリース バージョンが記載されています。 また、今後の言語リリースのパブリック プレビューの機能に関する初期ドキュメントも含まれています。
このドキュメントでは、言語の最後の 3 つのバージョンまたは現在のパブリック プレビューで最初に導入された機能を特定します。
ヒント
C# で機能が初めて導入された時期を確認するには、 C# 言語バージョン履歴に関する記事を参照してください。
Important
[StructLayoutAttribute] を ExtendedLayout 属性と組み合わせることはできません。
これらのカスタム属性の一部は、ソース コードに属性を追加するのではなく、他の C# 構文を使用して適用されます。
| 属性 | コメント |
|---|---|
| System.Runtime.InteropServices.DefaultParameterValueAttribute | パラメーターの既定値を指定します。 の既定のパラメーター構文を使用します。 |
| System.Runtime.InteropServices.InAttribute | IL [in] 修飾子を指定します。
in または ref readonly 修飾子を使用します。 |
| System.Runtime.InteropServices.OutAttribute | IL [out] 修飾子を指定します。
out 修飾子を使用します。 |
| System.Runtime.CompilerServices.SpecialNameAttribute | IL specialname 修飾子を指定します。 コンパイラは、必要なメソッドに対してこの修飾子を自動的に追加します。 |
| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute | この属性は delegate* 機能に必要です。 コンパイラは、その使用を必要とする任意の delegate* に追加します。 ただし、そのメソッドが関数ポインターに割り当てられている場合は、この属性を任意のメソッド宣言に追加する必要があります。 |
C# ソースでは、通常、次の属性は許可されていません。 リフレクションを使用するライブラリ作成者を支援し、同じ完全修飾名を持つカスタム属性を作成しないようにするために、ここに記載されています。
さらに、このコンパイラは、内部的に使用される他の属性の宣言を生成できます。 コンパイラは、独自に使用するために、System.Runtime.CompilerServices 名前空間にこれらの属性を生成します。 一部は .NET ランタイム ライブラリに含まれません。 代わりに、コンパイラは、属性が必要なアセンブリ内の internal 型宣言の定義を合成します。
.NET