Définition avec un ternairenuméro datetime étrange .Net
DateTime filterDate = endDate.HasValue ? endDate.Value : DateTime.Now.AddDays(7);
non ternaire
DateTime filterDate;
if (endDate.HasValue)
filterDate = endDate.Value;
else
filterDate = DateTime.Now.AddDays(7);
Si vous déboguer ces deux déclarations de la valeur filterDate ne sera pas la même. Pourquoi est-ce?
Dans le premier exemple, filterDate se termine par la valeur 01/01/0001. Dans le deuxième exemple, j'obtiens le résultat attendu: filterDate est un datetime 7 jours dans le futur. À ce stade, j'ai même essayé de définir endDate = null juste pour s'assurer et voici une capture d'écran de ce qui se passe. alt text http://www.freeimagehosting.net/uploads/57bef2e50a.png
Chose la plus étrange que j'ai jamais vue.
Avez-vous essayé de mettre entre parenthèses autour de votre ternaire? –
Utilisez-vous un DateTime nullable pour votre endDate? (c'est-à-dire DateTime? endDate) – Shimrod
Qu'est-ce que endDate? – serialhobbyist