2015-09-23 3 views
9

मैं हो रही है त्रुटि टाइप करने के लिए कोई मानक रूपांतरण हैं प्रकार ' ' का मान एक डिफ़ॉल्ट पैरामीटर के रूप में इस्तेमाल नहीं किया जा सकता है: कोड क्योंकि वहाँ 'टी'

के इस टुकड़े लिखने की कोशिश करते हुए

A value of type '' cannot be used as a default parameter because there are no standard conversions to type 'T'

protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = null); 

क्या किसी को पता है कि शून्य मूल्य प्रकार कैसे बनाना है। क्या इसे करने का कोई तरीका है?

+1

'संरक्षित टी getValue (अभिव्यक्ति > संपत्ति, टी defaultValueIfNull = नल) जहां टी: class' –

उत्तर

15

T पर कोई बाधा नहीं है, इसलिए यह एक मान प्रकार हो सकता है।
आप के रूप

protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = default(T)); 


विधि परिभाषा को फिर से लिखने कर सकते हैं कौन सा संदर्भ प्रकार और मूल्य प्रकार के लिए डिफ़ॉल्ट मान के लिए null मतलब होगा।

+1

वास्तव में, आप इस विधि के लिए मूल्य प्रकार पारित करने के लिए, बेहतर होगा विधि या पर बाधा जोड़ने के लिए (नहीं जा रहे हैं यदि श्रेणी टी कक्षा द्वारा परिभाषित किया गया है) कक्षा पर। –

+0

इससे वास्तव में मुझे इस मुद्दे को हल करने में मदद मिली। :) टीक्यू –

7

T इस मामले में भी एक मूल्य प्रकार हो सकता है, जैसे int, जो null नहीं हो सकता है। आप एक प्रकार बाधा को निर्दिष्ट करना चाहिए, वर्गों के लिए T सीमित:

...T defaultValueIfNull = null) where T : class 

एक वैकल्पिक ...T defaultValueIfNull = default(T)) का उपयोग करेंगे - आप बाधा की जरूरत नहीं होगी, लेकिन मूल्य प्रकार null के बजाय डिफ़ॉल्ट रूप से 0 बन जाएगा।