संभव डुप्लिकेट की सूची में अशक्त नहीं जोड़ सकते:
Adding null to a List<bool?> cast as an IList throwing an exception.nullables
List<int?> listONullables = new List<int?>();
IList degenericed = listONullables;
// This works fine
listONullables.Add(null);
// Run time exception:
// "The value "" is not of type "System.Nullable`1[System.Int32]"
// and cannot be used in this generic collection. Parameter name: value"
degenericed.Add(null);
// Also does not work. Same exception
degenericed.Add((int?)null);
// Also does not work
// EDIT: I was mistaken, this does work
degenericed.Add((int?)1);
// Also does not work
// EDIT: I was mistaken, this does work
degenericed.Add(1);
उपरोक्त कोड में टिप्पणियाँ देखें।
मैं इसके कारणों को समझता हूं (जब आप जेनेरिक को निकाल देते हैं तो रनटाइम सीमित जानकारी के साथ सबसे अच्छा कर सकता है)। मैं बस सोच रहा हूं कि इसके आसपास कोई रास्ता है, भले ही यह एक हैक का थोड़ा सा हो।
समस्या तब उत्पन्न हुई जब मैंने एक फ़ंक्शन के सामान्य संस्करण को गैर सामान्य संस्करण के रूप में एक ही निजी कार्यान्वयन का उपयोग करने का प्रयास किया, इसलिए यदि आवश्यक हो तो मैं इसके आसपास काम कर सकता हूं (दो बहुत समान कार्यान्वयन हैं), लेकिन स्पष्ट रूप से यह बेहतर है अगर मैं इसे समझ सकता हूं।
संपादित करें: मेरे द्वारा ऊपर की गई अंतिम दो प्रविष्टियां विफल नहीं हैं जैसे मैंने मूल रूप से कहा था। लेकिन पहले दो करते हैं। मैंने ऊपर दिए गए कोड में उस प्रभाव को टिप्पणियां जोड़ दी हैं।
जब मैंने कोशिश की तो आपका कोड अपवाद के बिना पूरी तरह से मेरे लिए चला गया। –
मैं दूसरे उदाहरण पर अपवाद की पुष्टि कर सकता हूं: '.dd ((int?) Null) ', .NET 3.5 – Aren
2 सकारात्मक और 1 नकारात्मक के साथ, यह समय है कि सभी ने कंपाइलर संस्करण आदि का उल्लेख करना शुरू किया। –