VB.NETにおける短絡評価の実行順序について
初質問になります。
現在VisualStudioで言語はVB.NETを使用してシステム開発をしております。
その際に、ある異なるリスト二つに対してどちらのリストの要素も存在する場合に処理を行いたく
又、そのリストの内一つは要素がある確率が低いので短絡評価を用いることにしました。
要素のリストが存在するかを確認するのに、社内ライブラリの関数を使用しています。
簡単に言うと、リストの要素がないときはFalseを返して、ある時はリストに対するAny関数を実行した結果を返すというものです。
戻り値はBool値なので、どちらに対してもBool値で評価して短絡評価で条件式を評価できると思ったのですが、
どちらもTrueの場合でも条件式以下の処理を実行できません。
短絡評価の実行順序を調べるにはどうしたらよいでしょうか。
##処理
If リスト1.社内のある関数 AndAlso リスト2.社内のある関数 Then したい処理 End If
##試したこと
・短絡評価を使用しなければ社内の関数を使用しても正しい評価を行うことができました。
・又、社内の関数を使用せずにリストに対してLinqのAny関数を使用してBool値を返すようにしても正しい評価を行うことができました。
以上2ケースに対してうまくいくことから、社内のある関数を使用して短絡評価を使用したときのみ正しく評価を行うことができないので
なぜなのか気になって質問してみました。
##補足
先ほど試したら、Any関数でも正しく評価できませんでした。
尚、Any関数とはSystem.linq名前空間内のAny関数のことで、
正しく評価できたと勘違いしたケースはSystem.Collection.ObjectModel名前空間内のCountフィールドを使用して
0以上の場合をTrueとしたときでした。
回答1件
あなたの回答
tips
プレビュー