Не так много, что вы должны быть обеспокоены. Это, конечно, не то, что можно предсказать.
При использовании строковых меток компилятор фактически использует внутреннюю хеш-таблицу, которая отображает строки в индексы в таблице переходов. Таким образом, операция на самом деле O (1) - независимо от количества меток.
Для целочисленных меток, то я считаю, что фактический генерируемый код зависит от количества меток и от того, являются ли числа последовательными (или «почти» последовательными). Если они последовательны (1, 2, 3, 4, ...), то они просто преобразуются в таблицу прыжков. Если их много, то будет использоваться таблица переходов Hashtable + (как со строками). Если есть только несколько меток, и они не являются таблицами, которые будут немедленно преобразованы в таблицу переходов, только тогда будет преобразован в серию операторов if..then..else.
В общем, однако, вы должны писать код так, чтобы вы могли читать его , а не так, чтобы компилятор мог генерировать "более быстрый" код.
(Обратите внимание, что мое описание выше - это деталь реализации того, как компилятор C # работает внутри: на него не следует полагаться всегда , работающий так - на самом деле, он может даже не работать так сейчас , но по крайней мере это общая идея).