Код: Выделить всё
public int Int(int value)
{
int sum = value switch
{
0 => 0,
1 => 1,
2 => 2,
_ => throw new System.Exception()
};
return sum;
}
public int String(string value)
{
int sum = value switch
{
"0" => 0,
"1" => 1,
"2" => 2,
_ => throw new System.Exception()
};
return sum;
}
Код: Выделить всё
// Integer method
public int Int(int value)
{
switch (value)
{
case 0:
return 0;
case 1:
return 1;
case 2:
return 2;
default:
throw new Exception();
}
}
// String method
public int String(string value)
{
if (!(value == "0"))
{
if (!(value == "1"))
{
if (value == "2")
{
return 2;
}
throw new Exception();
}
return 1;
}
return 0;
}
Мой вопрос:
Почему компилятор C# решает оптимизировать выражение строкового переключателя в цепочку if, но не применяет аналогичную оптимизацию для выражения целочисленного переключателя?Любое понимание причин различных оптимизаций компилятора для операторов переключения будет очень признателен!
Подробнее здесь: https://stackoverflow.com/questions/793 ... ently-from