DateTime tempDate = calculatesomedatetime();
someDateTimeControl.Value = null; //no issue
someDateTimeControl.Value = (tempDate > DateTime.MinValue)? tempDate : null;
Type d'expression conditionnelle ne peut être déterminée parce qu'il n'y a pas de conversion implicite entre System.DateTime et nulleType d'expression conditionnelle ne peut être déterminée parce qu'il n'y a pas de conversion implicite entre System.DateTime et nulle
Ligne 3 me jeter une telle erreur que je ne comprends pas que la comparaison est (tempDate > DateTime.MinValue)
et null
est juste l'attribution de valeur. Pourquoi le compilateur interpréterait-il cela comme une erreur?
Toutefois, si j'écris comme ci-dessous, il n'a pas de problème
if(tempDate > DateTime.MinValue)
{
someDateTimeControl.Value = tempDate;
}else
{
someDateTimeControl.Value = null;
}
'DateTime' est un' struct'. Il ne peut pas être affecté à 'null'. Vous devez le déclarer comme 'nullable' (comme:' DateTime? TempDate = ... ') ou utiliser une autre valeur par défaut, comme' DateTime.MinValue'. –
@RufusL: S'il vous plaît se référer à ma line2, le contrôle peut accepter null –
Oh, je dois avoir mal lu initialement, mais le problème est toujours fondamentalement le même. L'opérateur ternaire déduit le type retourné par la première partie, qui est un 'DateTime'. Vous devez toujours définir 'tempDate' comme nulle, ou le convertir en null dans l'expression ternaire. –