1

このような簡単な質問をして申し訳ありません..違いを混同することがあるので、明確にする必要があります。

次のifステートメントの違いを説明して、誰か助けてくれませんか?

sending = true;
if (sending && e.AssetType == AssetType.Notecard) //#1

対。

if ((sending) && (e.AssetType == AssetType.Notecard)) //#2

対。

if (sending || e.AssetType == AssetType.Notecard) //#3

対。

if ((sending) || (e.AssetType == AssetType.Notecard)) //#4

この特定のケースでは、「If(sending == true AND e.AssetType == AssetType.Notecard)」のように評価する必要があります。

別のケースでは、1 つの文字列と次のようなリストの内容をチェックする if ステートメントが必要です: "If(string == "Name" OR List.Contains("string"))

4

3 に答える 3

2

これらのコードに違いはありません。

if ((sending) && (e.AssetType == AssetType.Notecard))if (sending && e.AssetType == AssetType.Notecard)同じものに評価されます。

if(sending == true)またはif(sending) も同じことです。


||との違いについて質問している場合&&:

  • ||論理和です。TRUE の条件が1 つでも合格すれば十分です。if

  • &&論理積です。 合格するには、すべての条件が TRUE でなければなりませんif

どちらの場合も、評価は左から右に行われます。

シーケンスの例: if ((sending) && (e.AssetType == AssetType.Notecard))=> if sending==trueAND..rest..

于 2012-08-20T15:26:45.233 に答える
2

最初と 2 番目のステートメントは同じです (この場合、C# の評価の優先順位のため、括弧は必須ではありません!)

if (sending && e.AssetType == AssetType.Notecard)
if ((sending) && (e.AssetType == AssetType.Notecard))

同じように:

if ((sending == true) && e.AssetType == AssetType.Notecard))
if ((sending) && (e.AssetType == AssetType.Notecard))

また、上記と同じ理由で、3° と 4° のステートメントでも同じ結果が得られます

私はこれらのステートメントを使用します:

if (sending && (e.AssetType == AssetType.Notecard))

と:

if ((string == "Name") || List.Contains("string"))

(ただし、大文字/小文字や文化などの文字列比較モードに注意してください:

String.Compare(string, "Name", StringComparison.CurrentCultureIgnoreCase) == 0

大文字と小文字を区別せず、現在のカルチャと文字列を比較します)

于 2012-08-20T15:39:02.790 に答える