- ベストアンサー
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だったらとか色々やってみましたがわからなくて・・・ 警告なので動かないって訳ではないのですが・・・ よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
お世話になります。 ロジックの内容をアタマの中で フローチャート化してみると、 明示的に値を返していないパスがあるはずです。 「意識していないかもしれませんが、 このような可能性がありますよ」という警告だと思います。 Nothing を返すことを意識しているのであれば 明示的に書いてやると、この警告は消えます。 End Try の後に、 Return Nothing と書くと、 Forms が空っぽでも、 例外処理の Cacth ブロックに入ったときでも、 For Each ループ内で tag が該当しなくても Nothing が明示的に返されます。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
if で条件が合致した時に return していますけど、 ループが終了した時までにreturn がされていない場合、 return で値が明示的に返されていませんよということです。
お礼
回答ありがとうございます! 勉強になりましたありがとうございます。
お礼
回答ありがとうございます! 消えました! 勉強になりましたありがとうございます。