sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor behandler SqlParameter-navn/værdikonstruktøren 0 som null?

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.



  1. SqlDateTime.MinValue !=DateTime.MinValue, hvorfor?

  2. Sådan eksporterer du nemt Microsoft Access-data til Excel

  3. MySQL fra decimal(13.6) til valuta

  4. Beregning af afstand mellem to punkter (breddegrad, længdegrad)