2012-04-27 23 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

किसी भी संदर्भ प्रकार के लिए, डिफ़ॉल्ट मान एक अशक्त उदाहरण है। किसी भी मान प्रकार के लिए, डिफ़ॉल्ट मान Activator.CreateInstance के माध्यम से प्राप्त किया जा सकता है। लेकिन अगर आप एक चर instance कहा जाता है पता चलता है कि आप एक वास्तविक उदाहरण बजाय एक अशक्त संदर्भ चाहते हैं ... इसलिए जब आप यह कर सकते हैं जब:

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

... यह वास्तव में स्पष्ट नहीं है कि उपयोगी ये है। इस प्रकार के डिफ़ॉल्ट मूल्य है, जो डिफ़ॉल्ट उदाहरण प्रकार के समान नहीं है।

+0

नहीं, मैं इस मामले में शून्य से खुश हूं। तो मैं मूल्य प्रकार के लिए एक्टिवेटर का उपयोग करूंगा, अन्यथा शून्य। धन्यवाद जॉन –

संबंधित मुद्दे