Pourquoi la ligne de code suivante ne fonctionnerait-elle pas dans une méthode?
bool ret = false; if(count > 0) ret = true; return ret;
4 Réponses :
Je recommanderais: Il n'y a pas besoin de retourner explicitement avoir dit que votre erreur de compilation m'intrigue. À première vue, il semble que cela fonctionne. Pourriez-vous poster un exemple court mais complet qui ne compile pas à compiler? Le type de cette expression conditionnelle devrait être Quant à la question de bonus: je ne sais pas ce qui serait plus rapide, ni Je me soucie de 99,99% des cas. Je serais émerveillé em> pour constater qu'il a provoqué un retard important, à moins d'interdire l'inlinage pour une raison quelconque. Allez pour la solution la plus em> lisible em> qui est la déclaration de retour simple, imo. P> p> true code> ou
false code>. p>
bool code> sans problèmes. Je suppose que vous avez un scénario plus compliqué et en simplifiant l'exemple que vous avez supprimé le vrai problème. P>
Merci Jon, le problème était une simple erreur de syntaxe qui a été inaperçue inaperçue (généralement jusqu'à ce que vous avez demandé ce qui ne va pas. J'aime cette réponse, c'est encore plus court! Nombre de retour> 0;
Essayez ceci:
return count > 0 ? false : true;
Ceci fonctionne
return (count > 0 ? true : false);
du point de vue de c # est meilleur pour sa lecture à lectures. p> mais le compilateur optimise le code, de sorte que vos trois options sont réellement identiques une fois compilé. Vous pouvez essayer de regarder le code IL pour vérifier! P> p>
Je suppose qu'il n'y a pas d'erreur de temps compilée, juste que la méthode renvoie la mauvaise valeur?
C'était une erreur de temps de compilation ... Il y avait une erreur dans ma syntaxe.
Ce qui arrive fréquemment dans le cas de l'opérateur tertiaire, c'est que l'évaluation du premier résultat (Nombre> 0) détermine la valeur de retour que la fonction utilisera. Je suppose que votre fonction renvoie Bool?
Je voudrais essayer de déterminer la valeur du (comptage> 0). Si c'est le problème, vous devrez peut-être avoir à étudier la déclaration entière:
retour (BOOL) (((nombre> 0)? True: Faux); C'est une bizarrerie que j'ai vue dans d'autres endroits.
En outre, la question de bonus, ils devraient compiler exactement à la même chose (comme la 3ème variante:
bool re; if (comptez> 0) {ret = true;} else} else} else = faux} retoursert; code> Mais, j'ai toujours pensé que l'opérateur tertiaire a montré un grok plus complet de la langue «C» :)