5

私が次のものを持っている場合...

a OrElse b 

...そして a がTrue の場合、明らかに b は評価されません。しかし、 を追加するOrとどうなりますか?

a OrElse b Or c

c は評価されますか? そして、括弧を入れるとどうなりますか?

これが基本的なものである場合はお詫び申し上げます。もちろん、自分で答えをテストすることはできますが、この質問の答えがここや他の場所で見つかりません。OrOrElseを扱う多くの質問がありますが、 Or扱うものは何もありませ

4

4 に答える 4

5

OrElse は、左側と右側のパラメーター間を短絡します (2 つのパラメーターのみ)。したがって、Cこれを として扱うことができるため、常に評価されると思います(A OrElse B) Or C

MSDN OrElse

于 2010-09-09T14:49:59.177 に答える
3

これは演算子の優先順位の問題です。関連ドキュメントはこちら:
http://msdn.microsoft.com/en-us/library/fw84t893.aspx?ppud=4

重要な抜粋:

  • 優先順位が等しい演算子は、式に現れる順序で左から右に評価されます。

包含的論理和 ( Or, OrElse )

ここで学んだことは、Or と OrElse は同じ優先順位を持ち、同じ優先順位の演算子は左から右に評価されるということです。

したがって、aが true の場合bは評価されないと思います。しかし、cまだあります。aが false の場合、bが評価され、 の値に関係なくb、Or 演算子が評価されcます。したがって、はい、c常に評価されます。

OrElse実際問題として、使用する正当な理由がない限り、通常はコード内でOr. Or主に下位互換性のために存在します。

于 2010-09-09T15:21:19.440 に答える
3

提示された場合、c評価されます。小さなテストで次のことがわかります。

Debug.WriteLine(test(1) OrElse test(2) Or test(3))

Function test(ByVal a As Integer) As Boolean

    Debug.WriteLine(a)
    Return True

End Function

上記の例の出力:

1
3
真実
于 2010-09-09T15:07:04.747 に答える
-1

私の個人的な経験では、VB は、実際に評価されるかどうかに関係なく、すべての値を取得する傾向があります。

これは、アイテムの存在などの順序が重要な場合にのみ役立ちます。注意したかっただけです。

于 2010-09-09T14:56:25.460 に答える