開発 Cの条件付き属性とは何ですか? -techopediaからの定義

Cの条件付き属性とは何ですか? -techopediaからの定義

目次:

Anonim

定義-条件付き属性とはどういう意味ですか?

条件付き属性は、実行が前処理識別子の定義に依存するメソッドまたはクラスをマークするために使用されるタグです。


条件付き属性は、シンボルの定義に基づいてメソッドが選択的に呼び出される条件付きコンパイルを指定する条件を示します。 特定の条件付きコンパイルシンボルが定義されているかどうかに基づいて、条件に基づいて、特定のコードブロックをコンパイルする(Microsoft中間言語にコンパイルする)か、コンパイルしないようにコンパイラーに指示します。 特定のシンボルが呼び出された時点で定義されていない場合、そのメソッドまたはクラスの呼び出しはコンパイラによって無視されます。

Techopediaは条件付き属性を説明します

条件付き属性には次の特性があります。

  • メソッドおよびクラスに適用できますが、それらは属性から派生した場合のみです。
  • クラスに条件付き属性を適用している間、条件付きコンパイルシンボルが定義されている場合にのみ、属性クラスがメタデータに発行されます。
  • コンパイルを制御する識別子シンボルである1つのパラメーターを取ります。
  • 条件付きメソッドまたは属性クラスに渡される引数は、コンパイラによって型チェックされます。
  • ランタイムではなく、コンパイラによって完全に処理されます。
  • デリゲート作成式で使用されるメソッドには適用できません。
  • 条件付きメソッド用に生成されたコードには影響しませんが、メソッドの呼び出しには影響します。

条件付き属性は、宣言的なプログラミングパターンを提供し、ソースコードを簡単に管理するのに役立ちます。 メソッドレベルで条件付き属性を適用すると、ソースコードが読みやすくなります。 メソッドの呼び出し元は、条件付きコンパイルのために追加のコードを取得する必要はありません。 識別子DEBUGを使用してアプリケーションに関連する診断情報を表示および記録することにより、デバッグビルドでトレースおよびログ機能を有効にするために、条件付き属性が使用されます。 また、(開発に使用されるシステムの)デバッグビルドに関連するロジックを、サイトおよびアプリケーションに展開されるリリースビルドから分離するのに役立ちます。 コードの複製なしでソフトウェアの複数のエディション(一部のエディションで選択された機能)を維持するために、条件付きコンパイルは、定義されたそれぞれのシンボルに基づいて複数のエディションの単一のメインソースコードを維持する適切な手法を形成します。


条件付き属性を使用する際に従うべきいくつかの規則を次に示します。

  • クラスまたは構造体宣言内の条件付きメソッドは、戻り値の型がvoidである必要があります。
  • 複数の識別子を条件付き属性として使用する場合、メソッドの包含は、定義されたシンボルの論理ORまたは論理ANDの結果に基づきます。
  • インターフェイス宣言のメソッドに指定することはできません。
  • 条件付きメソッドの前に「オーバーライド」キーワードを付けることはできませんが、仮想メソッドにすることはできます。 オーバーライドされた場合、暗黙的に条件付きと見なされます。
  • 条件付きコンパイルの対象となるシンボルは、コンパイラコマンドラインオプションとして、またはOSシェルからの環境変数として、またはソースコードのプラグマ(プリプロセッサディレクティブ "#define"を使用)として定義できます。
  • C ++とは異なり、C#のシンボルの定義は任意の順序にすることができるため、「#define」と条件付きメソッドの間の順序を適切に設定する必要があります。

「#ifおよび#endif」を使用すると条件付き属性の代替オプションが形成されますが、後者は前者に比べてよりクリーンでエレガントでエラーの少ないアプローチを提供します。 内部的には、メソッドの条件付き属性を使用している間、メソッドはアセンブリの一部であり、ロードされないという違いがあります。 ただし、#if / #endifの場合、メソッドはアセンブリ自体に表示されません。

この定義はC#のコンテキストで記述されました
Cの条件付き属性とは何ですか? -techopediaからの定義