大規模プロジェクトでは、開発者は多くの場合、デバッグ ビルドとリリース ビルドを区別する必要があります。特定のコードセクションを有効または無効にします。このための 2 つの一般的なアプローチは、#if DEBUG と Conditional("DEBUG") です。
利点:
欠点:
Conditional("DEBUG") 属性は、DEBUG コンパイル シンボルに基づいて条件付きで除外されるメソッドまたは型をタグ付けします。ただし、#if DEBUG とは異なり、コードは IL にまだ存在しますが、呼び出し元のコンパイル時に DEBUG が設定されていない限り、メソッドの呼び出しは最適化されません。
利点:
欠点:
#if DEBUG と Conditional("DEBUG") のどちらを選択するかは、プロジェクトの特定のニーズによって異なります。
`
[Conditional("DEBUG")]
protected void VerifyPropertyName(String propertyName)
{
// ... code to validate property name ...
}
`
このメソッドは、デバッグ中にプロパティ名が検証されることを保証しますが、この呼び出しは、リリース ビルド中に省略されます。
`
public const String ENDPOINT = "Localhost";
public const String ENDPOINT = "BasicHttpBinding";
`
この定数は DEBUG フラグに基づいて異なるように構成され、デバッグ ビルドとリリース ビルドで異なる通信バインディングが可能になります。
次のことが重要です。 Conditional("DEBUG") の注釈が付けられたメソッドへの呼び出しは、実行時ではなくコンパイル時に除外されることに注意してください。これは、呼び出し元アセンブリで DEBUG が定義されている場合でも、条件付きコンパイルされたアセンブリ内からのそのようなメソッドへの呼び出しは完全に削除されることを意味します。
以上が#if DEBUG と Conditional('DEBUG'): C# プロジェクトではどちらの条件付きコンパイル手法を選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。