アプリ版:「スタンプのみでお礼する」機能のリリースについて

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だったらとか色々やってみましたがわからなくて・・・
警告なので動かないって訳ではないのですが・・・
よろしくお願いします。

A 回答 (2件)

お世話になります。



ロジックの内容をアタマの中で
フローチャート化してみると、
明示的に値を返していないパスがあるはずです。

「意識していないかもしれませんが、
このような可能性がありますよ」という警告だと思います。
Nothing を返すことを意識しているのであれば
明示的に書いてやると、この警告は消えます。

End Try
の後に、
Return Nothing
と書くと、
Forms が空っぽでも、
例外処理の Cacth ブロックに入ったときでも、
For Each ループ内で tag が該当しなくても
Nothing が明示的に返されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/08 09:12

if で条件が合致した時に return していますけど、


ループが終了した時までにreturn がされていない場合、
return で値が明示的に返されていませんよということです。
    • good
    • 2
この回答へのお礼

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

お礼日時:2006/08/08 09:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています