Bonjour,

J'ai une erreur de compilation que j'ai du mal à comprendre. Voilà le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
ExamDate = inf.ExamDate;
compile sans problème !

J'ai beau ouvrir les yeux et me gratter la tète, je ne comprends pas !

Papy !