В случае коммутатора, если мы будем писать "по умолчанию" как любое слово или одну букву, это не вызывает ошибку - программирование
Подтвердить что ты не робот

В случае коммутатора, если мы будем писать "по умолчанию" как любое слово или одну букву, это не вызывает ошибку

В switch, если мы пишем какое-либо слово или одну букву вместо default, она не выдает ошибки. например.

switch(10)
{
    case 1:
    break;

    hello:
    break;
}

Выполняется без ошибки.

Может ли кто-нибудь объяснить, как это работает?

4b9b3361

Ответ 1

Он компилируется, потому что hello: является меткой и, следовательно, может быть местом назначения goto. Когда я скомпилировал это, я получил предупреждения о ярлыке без ссылок (так как у меня не было goto)

Вот пример, который вы можете добавить в LINQPad - вы заметите, что он печатает как "1", так и "привет":

switch(1)
{
    case 1:
        "1".Dump();
        goto hello;
    break;

    hello:
        "hello".Dump();
        break;
}

Ответ 2

Он не связан с оператором switch. Это идентификатор метки для (редко используемого из-за плохой практики) goto statement.

goto something2;
something1:
    Console.WriteLine("world");
    goto done;
something2:
    Console.WriteLine("hello");
goto something1;
done:

Ответ 3

В вашем примере вы можете увидеть следующий фрагмент кода:

switch (10)
{
    case 1:
        break;

    hello:
        Console.Write("In hello label");
        break;
    case 2:
        goto hello;
        break;
}

В вышесказанном вы определяете метку для инструкции goto в инструкции switch. Если оператор switch падает до case 2, тогда он пойдет на метку hello. Поскольку ваш исходный фрагмент кода не имеет goto hello;, вы получите предупреждение о ярлыке без ссылок.

Ваш ярлык hello не должен ничего делать с оператором switch (кроме определения внутри).