J'ai défini Classe Personne propriété Anniversaire as Nullable DateTime?, alors pourquoi l'opérateur de fusion null ne devrait-il pas fonctionner dans l'exemple suivant?C# ?? null opérateur de coalescence question
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? DBNull.Value;
Le err du compilateur je suis arrivé était « Opérateur '??' ne peut pas être appliqué aux opérandes de type 'System.DateTime?' et « System.DBNull » »
Ce qui suit a également obtenu une erreur de compilation:
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
(person.Birthday == null) ? person.Birthday:DBNull.Value;
J'ai ajouté un casting à (objet) tel que recommandé par Refactor, et il a compilé, mais ne fonctionnait pas correctement et la valeur était stockée dans le sqlserver db comme nulle dans les deux cas.
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? (object)DBNull.Value;
Quelqu'un peut-il expliquer ce qui se passe ici?
je devais utiliser le code maladroit suivant:
if (person.Birthday == null)
cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value
= DBNull.Value;
else cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value =
person.Birthday;
Duplication de http://stackoverflow.com/questions/218808/c-ado-net-nulls-and-dbnull-is-there-more-efficient-syntax – sgriffinusa
Vous avez obtenu ce message à partir de l'autre message: SqlDbType.SmallDateTime)) .Value = personne.Annaissance ?? (objet) DBNull.Value; Merci! –