J'essaie d'utiliser l'opérateur conditionnel, mais je suis accroché sur le type qu'il pense que le résultat devrait être.Résultat du type avec l'opérateur conditionnel en C#
est un exemple ci-dessous que j'ai trouvé le moyen de montrer la question que j'ai:
class Program
{
public static void OutputDateTime(DateTime? datetime)
{
Console.WriteLine(datetime);
}
public static bool IsDateTimeHappy(DateTime datetime)
{
if (DateTime.Compare(datetime, DateTime.Parse("1/1")) == 0)
return true;
return false;
}
static void Main(string[] args)
{
DateTime myDateTime = DateTime.Now;
OutputDateTime(IsDateTimeHappy(myDateTime) ? null : myDateTime);
Console.ReadLine(); ^
} |
} |
// This line has the compile issue ---------------+
Sur la ligne indiquée ci-dessus, je reçois l'erreur de compilation suivante:
Type d'expression conditionnelle ne peut pas être déterminé car il n'y a pas de conversion implicite entre '< null>' et 'System.DateTime'
Je suis confus parce que le paramètre est un type Nullable (DateTime?). Pourquoi a-t-il besoin de convertir du tout? Si c'est null, utilisez-le, s'il s'agit d'une date, utilisez-le.
j'avais l'impression que:
condition ? first_expression : second_expression;
était le même que:
if (condition)
first_expression;
else
second_expression;
Il est clair que ce n'est pas le cas. Quel est le raisonnement derrière cela?
(REMARQUE:.?. Je sais que si je fais « MyDateTime » DateTime nullable il fonctionnera Mais pourquoi est-il besoin
Comme je l'ai dit plus tôt c'est un exemple artificiel Dans mon exemple réel " myDateTime "est une valeur mappée de données qui ne peut pas être rendue nulle.)
double possible de [affectation de l'opérateur conditionnel avec des types Nullable?] (Http://stackoverflow.com/questions/75746/conditional-operator-assignment-with-nullablevalue-types) –
nawfal
en double possible de [types nullables et la opérateur ternaire: pourquoi est \ '? 10: null \ 'interdit?] (Http://stackoverflow.com/questions/858080/nullable-types-and-the-ternary-operator-why-is-10-null-forbidden) –