Поделиться через


Решения и ветвление

Обновлен: Ноябрь 2007

Изменение потока управления в программе в ответ на какой либо ввод или вычисляемое значение является важной частью языка программирования. C# предоставляет возможность изменить поток управления либо безусловным способом — за счет перехода к новому расположению в коде, либо условным — за счет выполнения теста.

Примечания

В самой простой форме условного ветвления используется конструкция if. Предложение else можно использовать с конструкцией if, а конструкции if могут быть вложенными.

using System;

class Program
{
    static void Main()
    {
        int x = 1;
        int y = 1;


        if (x == 1)
            Console.WriteLine("x == 1");
        else
            Console.WriteLine("x != 1");


        if (x == 1)
        {
            if (y == 2)
            {
                Console.WriteLine("x == 1 and y == 2");
            }
            else
            {
                Console.WriteLine("x == 1 and y != 2");
            }
        }                
    }
}
s3xe34ex.alert_note(ru-ru,VS.90).gifПримечание.

В отличие от C и C++, операторы if требуют логических значений. Например, использование оператора, которому не задано простое значение True или False, например (a=10), не допускается. В C# ноль нельзя заменить на False, а 1 или другое значение на True.

Операторы, следующие за ключевыми словами if и else, могут представлять одну строку кода, как показано в первом операторе if-else в предыдущем примере кода, или блок операторов, заключенных в скобки, как показано во втором операторе if-else. Вложение операторов if-else является допустимым, однако в программировании лучшим способом считается использование оператора switch.

В зависимости от значения заданного выражения оператор switch может выполнять несколько действий. Код между оператором case и ключевым словом break выполняется при соблюдении данного условия. Если требуется, чтобы поток управления продолжался в другом операторе case, используйте ключевое слово goto.

using System;

class Program
{
    static void Main()
    {
        int x = 3;

        switch (x)
        {
            case 1: 
                Console.WriteLine("x is equal to 1");
                break;

            case 2:
                Console.WriteLine("x is equal to 2");
                break;

            case 3:
                goto default;

            default:
                Console.WriteLine("x is equal to neither 1 nor 2");
                break;
        }
    }
}

Выражение, применяемое оператором switch для определения возможности выполнения, должно использовать Встроенные типы данных, такие как int или string; более сложные пользовательские типы использовать нельзя.

В отличие от Visual Basic, условие в C# должно быть постоянным значением. Например, сравнение выражения и диапазона значений не допускается.

См. также

Основные понятия

Основы языка C#

Ссылки

Инструкции выбора (Справочник по C#)

Операторы перехода (Справочник по C#)