2012-04-27 12 views
6

の既定のインスタンスを作成します。私は、例えば、実行時までのタイプを持っていない場合はの反射同等であるどのようなタイプ

default(object); //null 

は、

public void Method(Type type) 
{ 
    var instance = type.CreateDefault(); //no such method exists, but I expect there is a way of doing this? 
} 

答えて

9

すべての参照型で、デフォルト値はnullインスタンスです。任意の値タイプに対して、デフォルト値はActivator.CreateInstanceで取得できます。しかし、あなたはこれを行うをすることができながら、だからあなたは...あなたは実際のインスタンスではなく、null参照をしたい示唆instanceという変数がある場合:どのように便利な

public object GetDefaultValue(Type type) 
{ 
    return type.IsValueType ? Activator.CreateInstance(type) : null; 
} 

を...それは本当にはっきりしていませんこれは。このタイプのデフォルトであり、このタイプのデフォルトと同じではありません。

+0

いいえ、私はこのケースではnullに満足しています。だから、私はActivatorを値の型に、そうでなければnullを使用します。ありがとうジョン。 –