参照型変数がNothingの場合でもその変数の型を取得するには?

解決


さんあん  2009-07-26 13:33:33  No: 146114  IP: 192.*.*.*

こんにちは。
例えば、以下のようにフォーム用の変数を宣言します。
Dim f As Form1
この変数を別のメソッドで処理をする時に、上記宣言した変数fの型が何であるか(この場合Form1)を調べたいのですが、
どのようにすればよいでしょうか?
変数fのインスタンスが作成されているのであれば、f.GetType()で取得できると思いますが、
変数fがNothingの場合でも、宣言したときの型が分かるようにしたいのです。
よろしくお願いいたします。
なお、VB.netのバージョンはVB2008です。

編集 削除
魔界の仮面弁士  2009-07-26 14:21:55  No: 146115  IP: 192.*.*.*

「変数 f の中身が、どのような型であるのか」を調べたいのではなく、
「変数 f が、どのような型として宣言されているか」を調べたい、という事でしょうか。

だとしたら、リフレクションを用いることで調べられるかと思います。

編集 削除
魔界の仮面弁士  2009-07-26 14:31:25  No: 146116  IP: 192.*.*.*

> だとしたら、リフレクションを用いることで調べられるかと思います。
そこまでせずとも、「型推論」を使えば、簡単に調べられるかな。

Public Class Form1
    Private Sub Form1_Load() Handles MyBase.Load
        Dim f0 As Form = Nothing
        Dim f1 As Form1 = Nothing
        Dim f2 As Form2 = Nothing

        MsgBox(GetVarType(f0).FullName)
        MsgBox(GetVarType(f1).FullName)
        MsgBox(GetVarType(f2).FullName)
    End Sub

    Function GetVarType(Of T)(ByVal var As T) As Type
        Return GetType(T)
    End Function
End Class

編集 削除
さんあん  2009-07-26 15:56:39  No: 146117  IP: 192.*.*.*

魔界の仮面弁士様。
早速のご回答、誠にありがとうございました。
上記方法でうまくいきました。
今後ともよろしくお願い申し上げます。

編集 削除