Както е посочено в документацията за този конструктор:
Вие просто извикахте различен конструктор, отколкото си мислехте във вашия случай.
Причината за това е, че C# позволява неявно преобразуване от целочисления литерал 0 към изброяващи типове (които са само интегрални типове отдолу) и това имплицитно преобразуване причинява (string, SqlDbType) конструктор, за да бъде по-добро съвпадение за разделителна способност при претоварване, отколкото боксовата конверсия, необходима за преобразуване на int към object за (string, object) конструктор.
Това никога няма да е проблем, когато подадете int променлива , дори ако стойността на тази променлива е 0 (защото не е нулев литерал) или всеки друг израз, който има типа int . Това също няма да се случи, ако изрично пуснете int към object както се вижда по-горе, защото тогава има само едно съответстващо претоварване.