जैसा कि दस्तावेज़ीकरण में बताया गया है उस कंस्ट्रक्टर के लिए:
आप बस एक अलग कंस्ट्रक्टर को बुला रहे थे जैसा आपने अपने मामले में सोचा था।
इसका कारण यह है कि C# एक अंतर्निहित . की अनुमति देता है पूर्णांक शाब्दिक से रूपांतरण 0 एनम प्रकारों के लिए (जो केवल नीचे अभिन्न प्रकार हैं), और यह निहित रूपांतरण (string, SqlDbType) का कारण बनता है int . को कन्वर्ट करने के लिए आवश्यक बॉक्सिंग रूपांतरण की तुलना में ओवरलोड रिज़ॉल्यूशन के लिए कंस्ट्रक्टर एक बेहतर मैच होना चाहिए object . के लिए (string, object) . के लिए कंस्ट्रक्टर।
जब आप int . पास करते हैं तो यह कोई समस्या नहीं होगी चर , भले ही उस चर का मान 0 . हो (क्योंकि यह शून्य शाब्दिक नहीं है), या कोई अन्य व्यंजक जिसका प्रकार int . है . यह तब भी नहीं होगा जब आप स्पष्ट रूप से int . डालें object . के लिए जैसा कि ऊपर देखा गया है, क्योंकि तब मिलान करने वाला केवल एक अधिभार होता है।