sql >> Databáze >  >> RDS >> Sqlserver

Proč konstruktor názvu/hodnoty SqlParameter považuje 0 za null?

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í.



  1. Datum z excelu se změní při nahrání do mysql

  2. Oracle SQL objednávka v poddotazu problémy!

  3. Hibernace kóduje špatně při zachování objektů [UTF-8]

  4. Jak zkontrolovat, zda soubor existuje v PL/SQL?