एक चाहिए उपयोग इस एक ही विधि/हस्ताक्षर और T
के प्रकार उपयोग करना आवश्यक है (और वहाँ , इस तरह के लिए कारण रहे हैं, हालांकि, अगर वहाँ तो Albin का जवाब देखने के नहीं हैं):
public static T GetValue<T>(T defaultValue)
{
// Need to use typeof to get a Type object for bool, just as with T
if (typeof(T) == typeof(bool)) {
// Need to say "get out of my way C#"
// The first cast to object is required as true (bool) is
// otherwise not castable to an unrestricted T.
// This widen-restrict approach could result in a cast error,
// but from the above check it is known that T is bool.
return (T)(object)true;
}
// .. other stuff that .. does stuff.
}
हालांकि, true
(जो बूलियन के लिए डिफ़ॉल्ट मान नहीं है) को स्पष्ट रूप से लौटा रहा है और defaultValue
को अनदेखा कर रहा है अन्यथा .. संदेह है। लेकिन - It compiles! Ship it!
नोट्स:
- उपयोग
==
प्रकार के लिए मज़बूती से उपवर्गों लिए काम नहीं करेगा (लेकिन यह ठीक है क्योंकि bool
एक संरचना इतनी उपप्रकार भी कोई समस्या नहीं है)। उन मामलों में, IsAssignableFrom
देखें।
typeof(T)
आवश्यक रूप से पारित मूल्य का प्रकार नहीं है (जो संदर्भ प्रकारों के लिए null
हो सकता है)। यह उपप्रकारों के साथ, मूल्य पर is
का उपयोग करने वाले दृष्टिकोणों के लिए सूक्ष्म भिन्नताओं का कारण बन सकता है।
स्रोत
2012-11-22 06:27:29
कंपाइलर त्रुटियों की खोज करने का प्रयास करें। मुझे यकीन है कि कई डुप्लीकेट हैं। कम से कम, * लागू होने पर प्रश्नों में * [कंपाइलर] त्रुटियों को शामिल करें। –