C'è qualche differenza tra null e System.DBNull.Value? Se sì, che cos'è?Qual è la differenza tra null e System.DBNull.Value?
ho notato questo comportamento la società -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
Mentre io recuperare i dati dal database utilizzando una datareader SQL, anche se non v'è alcun valore restituito if(rdr["Id"] != null)
ritornato true
e alla fine ha generato un'eccezione per lanciare una null come numero intero.
Ma, questo se uso if (rdr["Id"] != System.DBNull.Value)
restituisce false
.
Qual è la differenza tra null e System.DBNull.Value?
Beh, non sono correlati. Uno è un'istanza statica di una classe in 'System.Data', e l'altro è un valore speciale che indica la mancanza di un referente. Non hanno niente a che fare l'uno con l'altro. Puoi approfondire ciò di cui sei confuso? La tua vera domanda è "perché i' DataRows' e 'DataReaders' mettono' DBNull.Value' dentro se stessi invece di 'null'?" – mquander
Beh, non è stato inizialmente ma dopo aver imparato da quello che hai detto, sono curioso. Potresti dirmi perché DataRows e DataReader inseriscono DBNull.Value in se stessi anziché null? – pavanred
Non sono sicuro di me stesso. Ecco una risposta: http://stackoverflow.com/questions/4488727/what-is-the-point-of-dbnull/4488758#4488758 È anche possibile che prima che i tipi di valori nullable fossero in C#, sarebbe stato più di una seccatura per trattare con 'null'. – mquander