Som angivet i dokumentationen for denne konstruktør:
Du ringede simpelthen til en anden konstruktør, end du troede i dit tilfælde.
Grunden til dette er, at C# tillader en implicit konvertering fra det heltallige bogstav 0 til enum typer (som kun er integraltyper nedenunder), og denne implicitte konvertering forårsager (string, SqlDbType) konstruktøren passer bedre til overbelastningsopløsningen end den boxing-konvertering, der er nødvendig for at konvertere int til object for (string, object) konstruktør.
Dette vil aldrig være et problem, når du sender en int variabel , selvom værdien af denne variabel er 0 (fordi det ikke er et bogstav på nul) eller ethvert andet udtryk, der har typen int . Det vil heller ikke ske, hvis du eksplicit caster int til object som det ses ovenfor, for så er der kun én matchende overbelastning.