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.