2009-08-05 12 views
6

मेरे पास एक सामान्य विधि है:जेनेरिक तरीकों से 'शून्य' वापस नहीं कर सकते?

public T GetLevelElement<T>(string name) where T : ILevelElement 
{ 
    //[...] 
} 

जो मूल रूप से एक डीबी में एक लुकअप करता है और कुछ मामलों में यह परिणाम (और वापस नहीं आ सकता) परिणाम देता है और मैं शून्य वापस करना चाहता हूं।

हालांकि यह स्पष्ट रूप से संभव नहीं है क्योंकि ' टी और शून्य' के बीच कोई अंतर्निहित रूपांतरण नहीं है। इस मामले में मुझे क्या करना चाहिए?

उत्तर

24

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

public T GetLevelElement<T>(string name) where T : ILevelElement, class 
{ 
    [...] 
} 
+3

कम से कम .NET 3.5 में, उपर्युक्त होना चाहिए ... जहां टी: कक्षा, ILevelElement'। कंपाइलर चोक करता है क्योंकि यह 'क्लास' कीवर्ड पहले होना चाहता है। –

0

डस्टिन कैम्पबेल सही है। एक और समाधान default(T) वापस करना होगा।

+0

ओह। मैंने नहीं देखा कि उसने आपको पहले से ही डिफ़ॉल्ट कीवर्ड के बारे में बताया है। मेरे जवाब को अनदेखा करें। –

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