【VB】If文の条件式が複数ある場合、どちらも検証される?

完全にド忘れしてた…。

以下のような条件式がある場合、

If (Not IsNothing(dataList)) And dataList.Count > 0 Then

初めのNot IsNothingでNullチェックしてるから、dataListがNullなら次の比較式に進まないと思ってたら、がっつり検証されてた。

C#の感覚で組んでたものだから、なかなか気づかなくてハマってたんだけど…。

すっかり忘れていたよ、AndAlsoOrElseの存在を。

上記コードの場合、Nullの時に後の条件を検証させたくない場合は、

If (Not IsNothing(dataList)) AndAlso dataList.Count > 0 Then

って書かないといけない。

VB開発時は死ぬほど書いてたのに、しばらく離れるとすっかり忘れるもんだなー。
記憶に留めるためにクソみたいな内容ですが記事にしときます。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください