J'ai une instruction switch qui exécute une certaine logique encore et encore. Plutôt que d'utiliser couper et coller je voulais le mettre dans une fonction, mais je suis très mauvais à cela.Balise de rupture à l'intérieur d'une méthode
C'est ce que je veux faire, mais il ne compile pas parce que la balise de rupture dans la fonction n'existe pas. Quelqu'un peut-il refactoriser cela à une meilleure version de travail?
switch(param.ToString())
{
case "1":
BreakIfNotArgumentType<B>(param);
//do stuff
break;
case "2":
BreakIfNotArgumentType<BF>(param);
//do stuff
break;
}
private T BreakIfNotArgumentType<T>(object argumentObject)
{
if (argumentObject is T)
{
return (T)argumentObject;
}
else
{
break;
}
}
La solution d'exception est intéressante, mais il existe des problèmes de performance, et ce n'est vraiment pas un cas exceptionnel; On s'attend à ce qu'il se produise au moins une fois par instruction switch. Par conséquent, je préférerais la solution nulle. –
Très bien, je pense juste que la solution d'exception devrait être considérée comme s'il y avait l'exigence que quelque chose soit d'un type particulier, cela devrait être appliqué d'une manière ou d'une autre. La solution nulle est plus gracieuse mais laisse le code qui appelle cette fonction pour être conscient que null peut être retourné. –
@JB: La solution d'exception laisse également le code qui appelle la fonction à savoir qu'une exception peut être levée, ce qui est sans doute plus difficile à connaître (ou à déduire, de toute façon) que la possibilité d'une valeur nulle. –