46

C# では、OR を指定する方法:

if(this OR that) {do the other thing}

ヘルプで見つけられませんでした。

アップデート:

私のコードは次のとおりです。

if (title == "User greeting" || "User name") {do stuff}

私のエラーは次のとおりです。

エラー 1 演算子 '||' タイプ 'bool' および 'string' のオペランドには適用できません C:\Documents and Settings\Sky View Barns\My Documents\Visual Studio 2005\Projects\FOL Ministry\FOL Ministry\Downloader.cs 63 21 FOL Ministry

4

12 に答える 12

95

||C# の条件付き OR 演算子です。

名前のわからないものを探すのは大変なので、探すのに苦労したことでしょう。次回は、Google で「C# 演算子」を検索して、論理演算子を調べてみてください。

C# 演算子の一覧を次に示します。

私のコードは次のとおりです。

if (title == "User greeting" || "User name") {do stuff};

私のエラーは次のとおりです。

エラー 1 演算子 '||' タイプ 'bool' および 'string' のオペランドには適用できません C:\Documents and Settings\Sky View Barns\My Documents\Visual Studio 2005\Projects\FOL Ministry\FOL Ministry\Downloader.cs 63 21 FOL Ministry

代わりにこれを行う必要があります:

if (title == "User greeting" || title == "User name") {do stuff};

OR 演算子は、両側の式を同じ方法で評価します。あなたの例では、式title == "User greeting"(bool)と式"User name"(文字列)を操作しています。これらは、キャストまたは変換なしで直接組み合わせることができないため、エラーが発生しています。

さらに、||オペレーターが「短絡評価」を使用することは注目に値します。これは、最初の式が に評価されたtrue場合、2 番目の式は評価されないことを意味しますtrue。最適化中にこれを利用できる場合があります。

最後の簡単なメモ - 私はしばしば次のようにネストされた括弧で条件文を書きます:

if ((title == "User greeting") || (title == "User name")) {do stuff};

このようにして、優先順位を制御でき、操作の順序を気にする必要がなくなります。ここではおそらくやり過ぎですが、ロジックが複雑になると特に便利です。

于 2010-01-28T22:50:31.377 に答える
11

OR 演算子は二重パイプです。

||

したがって、次のようになります。

if (this || that) 
{
  //do the other thing
}

編集: 更新された試みが機能しない理由は、論理演算子が有効な C# 式を区切る必要があるためです。式にはオペランドと演算子があり、演算子には優先順位があります。

あなたの場合、==演算子が最初に評価されます。これは、式が として評価されていることを意味します(title == "User greeting") || "User name"。|| 次に評価されます。|| 以降 各オペランドがブール式である必要がありますが、オペランドが文字列であるため失敗します。

2 つの別個のブール式を使用すると、||オペレーターが適切に機能することが保証されます。

title == "User greeting" || title == "User name"
于 2010-01-28T22:45:52.493 に答える
9

あなたが必要

if (title == "User greeting" || title == "User name") {do stuff};
于 2010-01-28T22:52:42.113 に答える
9

完全を期すために、 || && は | の条件付きバージョンです。および & 演算子。

ECMA C# 言語仕様への参照はこちらです。

仕様から:

3 操作 x || y は操作 x | に対応します。ただし、x が false の場合にのみ y が評価されます。

バージョンでは|、両側が評価されます。

条件付きバージョンは評価を短絡するため、次のようなコードが可能になります。

if (x == null || x.Value == 5)
    // Do something 

または(しゃれた意図はありません)あなたの例を使用して:

if (title == "User greeting" || title == "User name") 
    // {do stuff} 
于 2010-01-28T22:54:43.623 に答える
5

または || です

そして &&

変更された質問の更新:

if ステートメントの各論理セクションで比較対象を指定する必要があります。

if (title == "User greeting" || title == "User name") 
{
    // do stuff
}
于 2010-01-28T22:45:49.930 に答える
5

条件 or 演算子は || です。

if (expr1 || expr2) {do stuff}

if (title == "User greeting" || title == "User name") {do stuff}

条件 (OR) とその部分はブール式です。

MSDN では、 http://msdn.microsoft.com/en-us/library/6a71f45d.aspxに C# 演算子を優先順位で示しています。ブール式の MSDN ページはhttp://msdn.microsoft.com/en-us/library/dya2szfk.aspxです。

プログラミングを学び始めたばかりの場合は、入門テキストまたはチュートリアルから条件付きステートメントを読む必要があります。これは基本のほとんどをカバーしているようです: http://www.functionx.com/csharp/Lesson10.htm

于 2010-01-28T22:46:13.003 に答える
3

OR を含む C# 演算子については、C#演算子を参照してください。||

于 2010-01-28T22:49:51.643 に答える
2

これが間違っている理由:

if (title == "User greeting" || "User name") {do stuff};

それが言っていることは

タイトルが文字列「User greeting」と等しい場合

または単に「ユーザー名」(タイトルが文字列「ユーザー名」と等しい場合はそうではありません)。あなたの後の部分は、または書き込みのようになります

if ("User name")

どのc#が何をすべきかわかりません。「ユーザー名」からブール値を取得する方法がわかりません

于 2010-01-28T23:08:51.490 に答える
1

if の形式で

if (this OR that) 

thisおよびthatは値ではなく式です。title == "aaaaa"は有効な式です。またOR、C# では有効なコンストラクトではありません。使用する必要があります||

于 2010-01-28T23:30:47.810 に答える
-1

OR は "||" として使用されます

 if(expr1 || expr2)
 {
    do something
 }
于 2016-09-07T08:57:49.790 に答える