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.