Решения и ветвление
Обновлен: Ноябрь 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");
}
}
}
}
Примечание. |
---|
В отличие от 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# должно быть постоянным значением. Например, сравнение выражения и диапазона значений не допускается.