VB.NET les valeurs null DateTime et Opérateur Ternaire
Je vais avoir des problèmes avec un Nullable DateTime dans VB.NET (VS 2010).
Méthode 1
If String.IsNullOrEmpty(LastCalibrationDateTextBox.Text) Then
gauge.LastCalibrationDate = Nothing
Else
gauge.LastCalibrationDate = DateTime.Parse(LastCalibrationDateTextBox.Text)
End If
Méthode 2
gauge.LastCalibrationDate = If(String.IsNullOrEmpty(LastCalibrationDateTextBox.Text), Nothing, DateTime.Parse(LastCalibrationDateTextBox.Text))
Quand ils reçoivent une chaîne vide, la Méthode 1 assigne une valeur Null (Nothing) sur la valeur de la jauge.LastCalibrationDate mais la Méthode 2 affecte le type DateTime.MinValue.
Dans d'autres endroits dans mon code j'ai:
LastCalibrationDate = If(IsDBNull(dr("LastCalibrationDate")), Nothing, dr("LastCalibrationDate"))
Correctement ceci affecte la valeur Null (Nothing) à partir d'un Opérateur Ternaire à Nullable DateTime.
Ce qui me manque? Merci!
OriginalL'auteur anonymous | 2010-11-15
Vous devez vous connecter pour publier un commentaire.
J'avoue que je ne suis pas un expert sur ce sujet, mais apparemment, il provient de deux choses:
If
opérateur ternaire peut retourner qu'un seul type, dans ce cas, une date, non nullable de type dateNothing
valeur n'est pas réellementnull
mais est équivalent à la valeur par défaut du type spécifié, dans ce cas, une date, et non nullable date. Donc la date de valeur minimale.J'ai tiré la plupart de l'information pour répondre à cette question à partir de cette SORTE de poste: Opérateur ternaire VB vs C#: pourquoi résout en entier et pas en entier?
Espère que cette aide et que quelqu'un comme Joel Coehoorn peut jeter plus de lumière sur le sujet.
OriginalL'auteur Bob Mc
Bob Mc est correct. Payer plus d'attention à son deuxième point - ce n'est pas le cas en C#.
Ce que vous devez faire est de forcer
Nothing
à nullable DateTime par moulage comme suit:Ici est un extrait de démontrer:
Au lieu de casting, vous pouvez aussi déclarer un nouveau nullable:
New Nullable(Of DateTime)
ouNew DateTime?()
. Ce dernier format est un peu étrange, mais c'est valable.OriginalL'auteur Ahmad Mageed