के साथ मान्य नहीं है मेरे पास यह फ़ंक्शन है जो वर्तमान मान की जांच करता है। जब वर्तमान मूल्य (1 पैरामीटर) शून्य या खाली है, तो यह आप पारित डिफ़ॉल्ट मान (2 पैरामीटर)निर्दिष्ट कास्ट जेनेरिक
public static T ZeroNull<T>(object currentValue, T defaultValue)
{
if (currentValue.Equals(DBNull.Value))
return (T)defaultValue;
else if (currentValue.Equals(string.Empty))
return (T)defaultValue;
else
return (T)currentValue;
}
का उपयोग करता कोड ऊपर ठीक से काम कर रहा है, आंशिक रूप से ... लेकिन जब मैं की तरह कोड का उपयोग यही नहीं, यह फेंकता एक "निर्दिष्ट डाली मान्य नहीं है ..."
float currValue = 20.1f;
int i = ZeroNull<int>(currValue, 0); // Specified cast is not valid
int i = ZeroNull<int>("10", 0); // Specified cast is not valid
किसी उपरोक्त कोड स्निप सुधार कर सकते हैं? और क्यों संकलक इस त्रुटि फेंक?
सादर, जेसी
समस्या यह है कि 'currValue' एक बॉक्स्ड नाव (20.1f) है और अपने एक पूर्णांक जो मान्य नहीं है करने के लिए Unbox करने की कोशिश कर रहा है। यह "10" – chomba
धन्यवाद चोंबा के लिए जाता है, लेकिन जब मैं ऐसा करता हूं तो यह त्रुटि क्यों नहीं फेंक रहा है। 'कोड'float currValue = 10.2f; 'कोड'int newCurrValue = (int) currValue; मुझे लगता है कि उनके पास एक ही तर्क है? – klaydze
ऐसा इसलिए है क्योंकि आप स्पष्ट रूप से मूल्य प्रकारों के बीच कास्टिंग कर रहे हैं। हालांकि जब आप किसी मान प्रकार का बॉक्स बनाते हैं तो आपको पहले इसे अंतर्निहित प्रकार में अनबॉक्स करना होगा। – chomba