VB .netのWith〜 End Withで横着したところうまく処理が出来ませんでした。
うまくいかなかったのは下のコード。
With 長めの名前のリスト(i)
For i = 0 To shortList(i).count – 1
If i = 0 OrElse .a <> 長めの名前のリスト(i – 1).a Then
色々処理①
Else
色々処理②
End If
Next
End With
「.a <> 長めの名前のリスト(i – 1).a」の結果がTrueだろうがFalseだろうが
色々処理①の方に入ってしまいます。
ちなみにOrElseは1つ目がTrueだったら以降の比較をしない、といったものです。
ついでAndAlsoと言うのもあります。1つ目がFalseだったら以降の比較をしません。
詳しくはOrElseとかAndAlsoで調べてみてくださいね。
結局Withを消して明示的に記載したら理想の動きをしてくれました。
With ちょっと長めの名前のリスト(i)
For i = 0 To shortList(i).count – 1
If i = 0 OrElse 長めの名前のリスト(i).a <> 長めの名前のリスト(i – 1).a Then
色々処理①
Else
色々処理②
End If
NextEnd With
色々処理①の中で別のメソッドを呼ぶ際に長めの名前のリストを多用するので
できれば簡略化したいなぁとWithを使った次第なんですが…
いけるかなーと試しに書いたらエラー出ないじゃん!いけるじゃーん!って思ったんですけどダメでしたね。