Sebagaimana dinyatakan dalam dokumentasi untuk konstruktor itu:
Anda hanya memanggil konstruktor yang berbeda dari yang Anda kira dalam kasus Anda.
Alasan untuk ini adalah bahwa C# mengizinkan implisit konversi dari literal integer 0 ke tipe enum (yang merupakan tipe integral di bawahnya), dan konversi implisit ini menyebabkan (string, SqlDbType) konstruktor agar lebih cocok untuk resolusi kelebihan beban daripada konversi tinju yang diperlukan untuk mengonversi int untuk object untuk (string, object) konstruktor.
Ini tidak akan menjadi masalah ketika Anda memberikan int variabel , meskipun nilai variabel tersebut adalah 0 (karena bukan literal nol), atau ekspresi lain yang memiliki tipe int . Itu juga tidak akan terjadi jika Anda secara eksplisit melemparkan int untuk object seperti yang terlihat di atas, karena hanya ada satu kelebihan yang cocok.