• ベストアンサー

null 参照の例外が実行時に発生する可能性があります

VB初心者です。色々調べてみたのですが分からなくて、ヒントでも結構ですので教えていただけないでしょうか。 現在VB.Net2003 からVB2005に移行しているのですが下記の関数で現在開いているフォームを調べていますがVB.Net2003だとなんら問題なかったのにVB2005では「関数 'FormIsLord_Tag' は、すべてのコード パス上では値を返しません。結果が使用されるときに、null 参照の例外が実行時に発生する可能性があります。」という警告が出てしまいます Function FormIsLord_Tag(ByVal GetTag As String) As Form Dim LoopForm As Form Try For Each LoopForm In Forms If LoopForm.Tag = GetTag Then Return LoopForm End If Next Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Function If LoopForm.Tag = GetTag Then とかの前にLoopFormがNothingだったらとか色々やってみましたがわからなくて・・・ 警告なので動かないって訳ではないのですが・・・ よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

お世話になります。 ロジックの内容をアタマの中で フローチャート化してみると、 明示的に値を返していないパスがあるはずです。 「意識していないかもしれませんが、 このような可能性がありますよ」という警告だと思います。 Nothing を返すことを意識しているのであれば 明示的に書いてやると、この警告は消えます。 End Try の後に、 Return Nothing と書くと、 Forms が空っぽでも、 例外処理の Cacth ブロックに入ったときでも、 For Each ループ内で tag が該当しなくても Nothing が明示的に返されます。

wingtodo
質問者

お礼

回答ありがとうございます! 消えました! 勉強になりましたありがとうございます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

if で条件が合致した時に return していますけど、 ループが終了した時までにreturn がされていない場合、 return で値が明示的に返されていませんよということです。

wingtodo
質問者

お礼

回答ありがとうございます! 勉強になりましたありがとうございます。

関連するQ&A