ドキュメント に記載されているとおり そのコンストラクターの場合:
自分の場合とは異なるコンストラクターを呼び出していただけです。
この理由は、C#では暗黙的が許可されているためです。 整数リテラル0からの変換 列挙型(その下にある整数型)に変換すると、この暗黙の変換によって(string, SqlDbType)が発生します。 intを変換するために必要なボクシングの変換よりも、オーバーロードの解決に適したコンストラクター objectへ (string, object)の場合 コンストラクター。
intを渡す場合、これが問題になることはありません。 変数 、その変数の値が0であっても (ゼロリテラルではないため)、またはタイプがintの他の式 。 intを明示的にキャストした場合も発生しません objectへ 上記のように、一致するオーバーロードは1つしかないためです。