EDIT: À l'origine, l'exemple de cet article traitait des codes de hachage. Vous verrez donc des commentaires utilisant param.GetHashCode(), plutôt que (1 + param). Pour aller plus loin, j'ai changé les fonctions pour en calculer une plus la valeur absolue d'un certain nombre. Disons que je veux créer une fonction qui calcule la valeur absolue d'un entier (sans utiliser Math.Abs). Je pourrais écrire quelque chose de similaire à:C# - Limitation de la portée à l'instruction ternaire
int absoluteValueOfOnePlus(int param)
{
int onePlusParam= 1 + param;
return ((onePlusParam> 0) ? (onePlusParam) : (-onePlusParam));
}
Je cherche à limiter la portée de onePlusParm à l'intérieur de la déclaration ternaire - quelque chose de similaire à:
int absoluteValueOfOnePlus(intparam)
{
return (((int onePlusParam = 1 + param) > 0) ? (onePlusParam) : (-onePlusParam));
}
Je comprends que ce n'est pas valide C# , mais cela prouve un bon exemple pour ce que j'essaie d'accomplir - créer une variable qui n'existe que dans le cadre d'un opérateur ternaire.
« Je cherche à compresser cette méthode jusqu'à une ligne". Pouvez-vous expliquer la raison pour laquelle vous devez faire cela? – openshac
vous pourriez faire 'int i; return i = param.GetHashCode()> 0? i: -i; '... je ne le ferais pas mais tu pourrais. –
@openshac, il s'agit plus de limiter la portée que toute autre chose. Si la fonction était beaucoup plus grande, j'existerais tout au long de la fonction. L'utilisation d'une déclaration dans l'instruction ternaire limiterait la portée à l'intérieur du ternaire - une fois l'instruction terminée, i est supprimé. –