sql >> Database >  >> RDS >> Sqlserver

Waarom behandelt de SqlParameter naam/waarde-constructor 0 als null?

Zoals vermeld in de documentatie voor die constructor:

Je riep gewoon een andere constructor aan dan je in jouw geval dacht.

De reden hiervoor is dat C# een impliciete . toestaat conversie van het gehele getal letterlijke 0 om typen op te sommen (wat gewoon integrale typen eronder zijn), en deze impliciete conversie veroorzaakt de (string, SqlDbType) constructor om een ​​betere match te zijn voor overbelastingsresolutie dan de boksconversie die nodig is om int te converteren naar object voor de (string, object) constructeur.

Dit zal nooit een probleem zijn als je een int . doorgeeft variabele , zelfs als de waarde van die variabele 0 . is (omdat het geen letterlijke nul is), of een andere uitdrukking van het type int . Het zal ook niet gebeuren als je de int . expliciet cast naar object zoals hierboven te zien, want dan is er maar één bijpassende overbelasting.



  1. Een nieuw databasediagram maken met MySQL Workbench

  2. Best practice voor het opslaan van databasewachtwoord

  3. Verkrijg de korte naam van de maand in PostgreSQL

  4. UTF-8-tekens detecteren in een Latin1-gecodeerde kolom - MySQL