Jak je uvedeno v dokumentaci pro tento konstruktor:
Jednoduše jste volali jiný konstruktor, než jste si ve svém případě mysleli.
Důvodem je to, že C# umožňuje implicitní převod z celočíselného literálu 0 na výčt typů (což jsou pouze integrální typy níže) a tento implicitní převod způsobí (string, SqlDbType) konstruktor, aby lépe odpovídal rozlišení přetížení než převod do boxu nutný k převodu int na object pro (string, object) konstruktor.
To nikdy nebude problém, když předáte int proměnná , i když je hodnota této proměnné 0 (protože to není nulový literál), nebo jakýkoli jiný výraz, který má typ int . Také se to nestane, pokud explicitně přetypujete int na object jak je vidět výše, protože pak existuje pouze jedno odpovídající přetížení.