Wie in der Dokumentation angegeben für diesen Konstruktor:
Sie haben einfach einen anderen Konstruktor aufgerufen, als Sie in Ihrem Fall dachten.
Der Grund dafür ist, dass C# ein implizites erlaubt Konvertierung aus dem Integer-Literal 0
in Aufzählungstypen (die darunter nur ganzzahlige Typen sind), und diese implizite Konvertierung verursacht den (string, SqlDbType)
Konstruktor besser für die Überladungsauflösung geeignet als die Boxing-Konvertierung, die zum Konvertieren von int
erforderlich ist zu object
für den (string, object)
Konstruktor.
Dies wird niemals ein Problem sein, wenn Sie einen int
übergeben Variable , auch wenn der Wert dieser Variablen 0
ist (weil es kein Nullliteral ist) oder irgendein anderer Ausdruck, der den Typ int
hat . Es wird auch nicht passieren, wenn Sie int
explizit umwandeln zu object
wie oben gesehen, weil es dann nur eine passende Überladung gibt.