Какой из них лучше, если принять во внимание производительность если еще если или чехол для переключателя
Дубликат: Есть ли существенная разница между использованием if / else и switch-case в C#?





Как для удобства чтения, так и для смысла используйте оператор switch вместо множества операторов IF.
Однако оператор switch работает немного быстрее:
http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx (первое обращение в Google)
Компилятор может оптимизировать оператор switch, поэтому используйте его, если у вас более, я бы сказал, 3 или 4 разных случая
Если вы используете int / string / etc, то switch имеет несколько более сложных опций перехода, которые могут сделать switch более эффективным, если у вас много условий. Однако разница вряд ли будет огромной, и switch подходит не для всех типов (только для целочисленных и строковых).
Это больше вопрос стиля, чем производительности. На мой взгляд, любая разница в производительности будет незначительной. Также см. https://stackoverflow.com/questions/395618/ifelse-vs-switch.
Я читал, что операторы переключения могут быть немного быстрее.
Что ты включаешь? Если вы включаете строку, компилятор C# либо преобразует ее в словарь или же в серию проверок if / else. Что будет быстрее, зависит от рассматриваемых строк (включая строку-кандидат).
Если вы включаете целочисленное значение, я считаю, что компилятор C# всегда использует оператор переключения IL, но это может быть или не быть быстрее, чем последовательность if / else, в зависимости от задействованных значений. (Если они находятся в большом непрерывном блоке, CLR может просто перейти в нужное место в таблице - если они очень разрозненные, я подозреваю, что это не поможет.)
Это просто пустой запрос или вы действительно оптимизируете микро-оптимизацию на этом уровне? Любая разница в производительности будет незначительной в подавляющем большинстве случаев - пишите для удобства чтения.
При решении проблем производительности вы должны измерить разницу, используя реалистичные данные. Тот факт, что вы спрашиваете об этом со спекулятивной точки зрения, предполагает, что у вас нет реальной проблемы с производительностью, с которой нужно иметь дело, и поэтому вам следует беспокоиться о том, что более читабельно / удобно
Сложно, вам придется запускать тесты, потому что if и переключатели приводят к другому коду IL.
Можно было бы надеяться, что они были идентичны.
обман: stackoverflow.com/questions/395618/ifelse-vs-switch