Autant que je puisse comprendre, la méthode LINQ Je ne veux pas vérifier si ... ou: p> ... semble un peu excentrée - je voudrais Aime faire ce null-check dans une ligne de code. p> p> FIREDORDEFAULT () code> retourne null code> si un jeu d'enregistrement est vide. Pourquoi ne peut pas utiliser l'opérateur code> contre la fonction? Comme:
Mise à jour forte> p> d code> est null code> plus loin dans mon code. Et faire: p>
5 Réponses :
Parce que l'opérateur null-coalescent ( ?? code> ) s'applique uniquement aux types de référence nullables, tandis que Double est un type de valeur. Vous pouvez utiliser un double brossable à la place ( double? Code>). P>
@FeSnabel, absolument, comme 0.0 code> est la valeur par défaut d'un double de toute façon.
Le fait de le faire nullable code> devrait fonctionner. Mais, alors vous en faites nullable code>, tout dépend de votre scénario ...
En réalité, firstordefault par défaut (t) code>. p>.
par défaut (t) code> est soit null code> ou (t) 0 code> pour les types de valeur (comme double code>) p>
La méthode est appelée FirstOrdefault Not FiestorNull, c'est-à-dire. Il retournera 0, la valeur par défaut d'un double de toute façon, donc il n'y a pas de besoin pour le ??. P>
Aurait accepté votre réponse. Mais James Curran a fourni un plus élaboré. Merci Ben.
Bien que d'autres ont répondu à la raison pour laquelle vous avez des problèmes de compilation ici, vous avez raison de dire que cela est problématique pour les types de valeur. À ma connaissance, il n'ya aucun moyen de savoir dans ce cas si un résultat de zéro était que le premier élément était vraiment zéro ou parce que le dans l'exemple Vous avez donné, la valeur de secours est zéro quand même, vous avez donc tout ce dont vous avez besoin est la suivante: p> supposant que vous aviez une valeur de repli sans zéro, vous avez quelques options: p> ou p> si vous avez ienumerable var r = myDoubles.FirstOrFallback(fallback);
Pendant que vous testez, vous pouvez remplacer
nouveau double [] {}. FirstArdefault (); code> avecpar défaut (double) code>.