2010-04-21 3 views
21

संभव डुप्लिकेट:
Default value of a type.NET में, रनटाइम पर: टाइप ऑब्जेक्ट से किसी प्रकार का डिफ़ॉल्ट मान कैसे प्राप्त करें?

सी # में, एक प्रकार का डिफ़ॉल्ट मान प्राप्त करने के लिए, मैं लिख सकते हैं ...

var DefaultValue = default(bool);` 

लेकिन, कैसे प्राप्त करने के लिए एक आपूर्ति प्रकार चर के लिए एक ही डिफ़ॉल्ट मान ?.

public object GetDefaultValue(Type ObjectType) 
{ 
    return Type.GetDefaultValue(); // This is what I need 
} 

या, दूसरे शब्दों में, "डिफ़ॉल्ट" कीवर्ड का कार्यान्वयन क्या है?

+0

यह काफी डुप्लिकेट है ["एक प्रकार का डिफ़ॉल्ट मान"] (http://stackoverflow.com/questions/2490244/default-value-of-a-type)। कोडेका एक अच्छा [उत्तर] देता है (http://stackoverflow.com/questions/2490244/default-value-of-a-type/2490274#2490274) जो मुझे लगता है कि आपकी मदद करेगा। –

+0

वापसी डिफ़ॉल्ट (ऑब्जेक्ट टाइप) काम नहीं करता है? –

उत्तर

35

मुझे लगता है कि फ्रेडरिक के समारोह वास्तव में इस तरह दिखना चाहिए कि:

public object GetDefaultValue(Type t) 
{ 
    if (t.IsValueType) 
    { 
     return Activator.CreateInstance(t); 
    } 
    else 
    { 
     return null; 
    } 
} 
+0

है कि! मैंने इसे संरचना, enum, मूल्य और संदर्भ प्रकार के साथ परीक्षण किया और बहुत बढ़िया काम करता है। धन्यवाद! –

13

आप शायद बहुत Nullable<T> मामले को बाहर रखना चाहिए, कुछ CPU चक्र को कम करने:

public object GetDefaultValue(Type t) { 
    if (t.IsValueType && Nullable.GetUnderlyingType(t) == null) { 
     return Activator.CreateInstance(t); 
    } else { 
     return null; 
    } 
} 
+1

आप गैर-शून्य प्रकारों की लागत पर Nullables के लिए अनुकूलित कर रहे हैं। – 0xF

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

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