1

私は以下を書くためのより良い方法があるかどうかを見ようとしています:

if ((DirectoryDetailsPath == null) & (FileDetailsPath == null))
{
  Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");

}

ビット単位の「&」演算子を使用せずに。論理演算子を使用することをお勧めしますが、短絡のため、両方のフィールドを評価することはできません。

両方のフィールドが「null」の場合にのみエラーを表示したい。

ありがとう

4

2 に答える 2

2

両方のフィールドが「null」の場合にのみエラーを表示したい。

次に、を使用してみてください&&

if ((DirectoryDetailsPath == null) && (FileDetailsPath == null))
{
  Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");

}

詳しくは:

上記のソリューションは、最初の条件がfalseの場合に短絡します。これは、両方の値がnullの場合にのみ出力を書き込むという要件を満たしています。

于 2012-04-24T18:42:02.377 に答える
2

本当に両方の条件を評価する必要があり、ビット演算子を使用したくない場合は、ifステートメントの外で実行してください。

bool isDirectoryDetailsPathNull = DirectoryDetailsPath == null;
bool isFileDetailsPathNull = FileDetailsPath == null;

if (isDirectoryDetailsPathNull && isFileDetailsPathNull)
{
    Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");
}

しかし、これには本当に意味がありません。コンパイラーはおそらく変数をインライン化することを決定し、これを効果的に提供します。これはあなたが望まないと言ったことです。

if ((DirectoryDetailsPath == null) && (FileDetailsPath == null))
{
    Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");
}
于 2012-04-24T18:47:43.077 に答える