Tworzyłem metodę C# w visual studio, która zawierała tylko instrukcję switch, w której każdy przypadek zwrócił wartość. Przez osobiste przyzwyczajenia, kładę coś podobnego do następującego kodu:C# Switch Statement: Bardziej wydajne, aby nie używać domyślnego?
private string SwitchMethod(int num)
{
switch (num)
{
case 0:
return "result 1";
case 1:
return "result 2";
case 2:
return "result 3";
}
return "no result";
}
Moje pytanie brzmi: Który kod będzie mieć lepszą wydajność? Kod powyżej lub poniżej, czy są takie same? I dlaczego?
Założę, że z powodu optymalizacji kompilacji ... mogą być po prostu takie same ... ale tak naprawdę nie wiem.
private string SwitchMethod(int num)
{
switch (num)
{
case 0:
return "result 1";
case 1:
return "result 2";
case 2:
return "result 3";
default:
return "no result";
}
}
ZMIAN: Wydaje się, że powinienem być bardziej szczegółowe: Kiedy skompilowany ... będzie mniej wydajny kod generowany przez jednego lub drugiego?
Zdaję sobie sprawę, że różnica w wydajności może być niewielka ... Jestem po prostu ciekawa.
Jest to dość subiektywne. Unikam wielu punktów wyjścia z metody lub funkcji, ale YMMV. Jeśli jesteś naprawdę ciekawy, spójrz na IL. –
To skompilowane? Nie stoję przed moim kompilatorem, ale jestem prawie pewien, że wymagane jest ustawienie domyślne. –
Wyrzuć wyjątek, mówiąc "nie powinno się tu dostać" jako domyślny, jeśli naprawdę myślisz, że to się nie stanie – Matt