मैंने कोड के एक टुकड़े में एक अजीब समस्या देखी जहां एक adhoc SQL क्वेरी अपेक्षित आउटपुट का उत्पादन नहीं कर रही थी, भले ही इसके पैरामीटर डेटा स्रोत में रिकॉर्ड मिलान करते थे। मैं तत्काल विंडो में निम्न परीक्षण अभिव्यक्ति डालने का फैसला किया:एसकल्प पैरामीटर नाम/मूल्य कन्स्ट्रक्टर 0 शून्य के रूप में क्यों व्यवहार करता है?
new SqlParameter("Test", 0).Value
यह null
का एक परिणाम है, जो मुझे मेरे सिर खरोंच छोड़ देता है दे दी है। ऐसा लगता है कि SqlParameter
कन्स्ट्रक्टर ज़ीरो को नल के रूप में मानता है। निम्नलिखित कोड सही परिणाम उत्पन्न करता है:
SqlParameter testParam = new SqlParameter();
testParam.ParameterName = "Test";
testParam.Value = 0;
// subsequent inspection shows that the Value property is still 0
क्या कोई इस व्यवहार को समझा सकता है? क्या यह किसी भी तरह जानबूझकर है? यदि हां, तो यह संभावित रूप से बल्कि खतरनाक है ...
इस विषय पर और पढ़ें: http://stackoverflow.com/questions/14224465/compiler-value-type-resolution-and-hardcoded-0-integer-values – RLH