Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо конструкторът на име/стойност на SqlParameter третира 0 като нула?

Както е посочено в документацията за този конструктор:

Вие просто извикахте различен конструктор, отколкото си мислехте във вашия случай.

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

Това никога няма да е проблем, когато подадете int променлива , дори ако стойността на тази променлива е 0 (защото не е нулев литерал) или всеки друг израз, който има типа int . Това също няма да се случи, ако изрично пуснете int към object както се вижда по-горе, защото тогава има само едно съответстващо претоварване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pyodbc не може да се свърже с базата данни

  2. Алтернативи на SQL Server Management Studio за разглеждане/редактиране на таблици и изпълнение на заявки

  3. Анализирайте XML в SQL Server

  4. Пуснете първичния ключ с помощта на скрипт в базата данни на SQL Server

  5. Системни бази данни на SQL Server – Поддръжка на MSDB