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.