it-swarm-ja.tech

C#「または」演算子?

C#にor演算子はありますか?

私はやってみたいです:

if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true)
{
    // Do stuff here
}

しかし、私はそのようなことをどのようにできるかわからない。

18
Jarred Sumner

C#は2つのブールor演算子をサポートします:単一のバー|およびダブルバー||

違いは、|は常に左と右の両方の条件をチェックしますが、||は、必要な場合にのみ右側の条件をチェックします(左側がfalseと評価された場合)。

これは、右側の条件に処理が含まれる場合、または副作用が発生する場合に重要です。 (たとえば、ErrorDumpWriter.Closeメソッドは、何かの状態を完了または変更するのに時間がかかりました。

77
Jeff Sternal

また、C#では、OR演算子はショートサーキットです。あなたの例では、Closeはプロパティのように見えますが、メソッドの場合は、次のことに注意する価値があります。

if (ActionsLogWriter.Close() || ErrorDumpWriter.Close())

根本的に異なる

if (ErrorDumpWriter.Close() || ActionsLogWriter.Close())

C#では、最初の式がtrueを返す場合、2番目の式はまったく評価されません。これに注意してください。それはほとんどの場合、実際にあなたの利益に役立ちます。

8
Josh
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{    // Do stuff here
}
4
Dave Barker

単一の「|」演算子は、式の両側を評価します。

    if (ActionsLogWriter.Close | ErrorDumpWriter.Close == true)
{
    // Do stuff here
}

二重演算子 "||"は、式がtrueを返す場合にのみ左側を評価します。

    if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{
    // Do stuff here
}

C#はC++と多くの類似点を持っていますが、それでも2つの言語の違いです;)

3
wls223

cやC++と同様に、ブール値または演算子は||

if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{
    // Do stuff here
}
2
Jeff Paquette

または|| C#で。

this をご覧ください。

2
Secko