Equivalence de type avec nullable
Bonjour,
J'ai une erreur de compilation que j'ai du mal à comprendre. Voilà le code:
Code:
1 2
|
ExamDate = inf.ExamDate.ToOADate() == 0.0 ? null : inf.ExamDate; |
ExamDate est du type System.DateTime? et inf.ExamDate de type System.Datetime.
A la compilation, j'ai l'erreur:
Citation:
Erreur 1 Le type d'expression conditionnelle ne peut pas être déterminé, car il n'existe pas de conversion implicite entre '<null>' et 'System.DateTime'
Si j'écris
Code:
1 2 3 4 5
|
if (inf.ExamDate.ToOADate() == 0.0)
ExamDate = null;
else
ExamDate = inf.ExamDate; |
Aucune erreur !
Ça me parait pourtant être la même chose.
Pourtant, il y a forcément une différence sinon C# ne râlerait pas.
Par contre, si je fais ça:
Code:
1 2
|
ExamDate = inf.ExamDate.ToOADate() == 0.0 ? null : (System.DateTime?)inf.ExamDate; |
Plus d'erreur non plus !
Ce qui voudrait dire que je ne peux assigner à mon ExamDate qu'une valeur de type System.DateTime? Pourtant:
Code:
ExamDate = inf.ExamDate;
compile sans problème !
J'ai beau ouvrir les yeux et me gratter la tète, je ne comprends pas !
Papy !