Ich habe eine switch-Anweisung, die einige Logik immer wieder ausführt. Anstatt dann cut and paste zu verwenden, wollte ich es in eine Funktion bringen, aber dabei versage ich schlecht.Break-Tag innerhalb einer Methode
Dies ist, was ich tun möchte, aber es kompiliert nicht, da das Break-Tag in der Funktion nicht existiert. Kann jemand dies zu einer besseren Arbeitsversion umgestalten?
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;
}
}
Die Ausnahme Lösung ist interessant, aber es gibt Leistungsbedenken, und es ist wirklich kein Ausnahmefall; Es wird erwartet, dass es mindestens einmal pro Switch-Anweisung passiert. Daher würde ich die Nulllösung bevorzugen. –
Das ist in Ordnung, ich denke nur, dass die Ausnahme-Lösung berücksichtigt werden sollte, als ob die Anforderung, dass etwas von einem bestimmten Typ sein sollte, dies irgendwie durchgesetzt werden sollte. Die Null-Lösung ist eleganter, obwohl der Code, der diese Funktion aufruft, den Wert Null zurückgibt. –
@JB: Die Ausnahmelösung hinterlässt auch den Code, der die Funktion aufruft, um zu wissen, dass eine Ausnahme ausgelöst werden kann, was wohl schwerer zu wissen (oder jedenfalls abzuleiten) ist als die Möglichkeit einer Null. –