横着良くない

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
Next
End With

色々処理①の中で別のメソッドを呼ぶ際に長めの名前のリストを多用するので
できれば簡略化したいなぁとWithを使った次第なんですが…

いけるかなーと試しに書いたらエラー出ないじゃん!いけるじゃーん!って思ったんですけどダメでしたね。

投稿者: motalenemy

切り絵とゲームを気まぐれで作る仮面ライダー好きな馬骨

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。