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