Conforme declarado na documentação para esse construtor:
Você simplesmente estava chamando um construtor diferente do que pensava no seu caso.
A razão para isso é que C# permite um implícito conversão do literal inteiro
0
para tipos enum (que são apenas tipos integrais abaixo), e essa conversão implícita faz com que o (string, SqlDbType)
construtor para ser uma combinação melhor para resolução de sobrecarga do que a conversão de boxe necessária para converter int
para object
para o (string, object)
construtor. Isso nunca será um problema quando você passar um
int
variável , mesmo que o valor dessa variável seja 0
(porque não é um literal zero), ou qualquer outra expressão que tenha o tipo int
. Também não acontecerá se você converter explicitamente o int
para object
como visto acima, porque então há apenas uma sobrecarga correspondente.