5

たとえば、この質問に示されているように、「デフォルト」キーワードが静的に決定された型のデフォルト値を返すことを私は知っています。

ただし、型のインスタンスが与えられた場合、この型のデフォルト値を動的に取得する簡単な方法はありますか? グーグルで見つけた唯一の方法はこれです:

static object DefaultValue(Type myType)
{
    if (!myType.IsValueType)
        return null;
    else
        return Activator.CreateInstance(myType);
}

しかし、できれば Activator クラスは避けたいです。

4

2 に答える 2

7

なぜActivatorを避けたいのですか? 基本的にその方法です。

つまり、ジェネリック メソッドを記述し、それをリフレクション経由で呼び出すこともできますが、Activator を回避するためだけに、これは非常に厄介な「ロング カット」です。

于 2009-02-06T13:36:49.693 に答える
5

これがおそらく最良のルートです。

ここで Activator クラスを使用することを恐れません。これは、コンパイラが依存する非常に標準的なクラスです。たとえば、このVBコード

Public Sub Example(Of T as New)()
  Dim x = new T()
End Sub

おおよそこのコードに変換されます

Public Sub Example(Of T As New)()
  Dim x = Activator.CreateInstance(OF T)
ENd Sub
于 2009-02-06T13:37:14.933 に答える