C# Language
Условные заявления
Поиск…
If-Else Statement
Для программирования в целом часто требуется decision
или branch
в коде для учета того, как код работает под разными входами или условиями. В языке программирования C # (и большинстве языков программирования для этого) самым простым и иногда наиболее полезным способом создания ветки в вашей программе является оператор If-Else
.
Предположим, что у нас есть метод (aka a function), который принимает параметр int, который будет составлять оценку до 100, и метод будет распечатывать сообщение о том, проходим ли мы или проваливаем.
static void PrintPassOrFail(int score)
{
if (score >= 50) // If score is greater or equal to 50
{
Console.WriteLine("Pass!");
}
else // If score is not greater or equal to 50
{
Console.WriteLine("Fail!");
}
}
При просмотре этого метода вы можете заметить эту строку кода ( score >= 50
) внутри оператора If
. Это можно рассматривать как boolean
условие, где, если условие оценивается равным true
, тогда выполняется код, находящийся между if
{ }
.
Например, если этот метод был вызван следующим образом: PrintPassOrFail(60);
, результатом этого метода будет сообщение Console Print say Pass! поскольку значение параметра 60 больше или равно 50.
Однако, если метод был вызван как: PrintPassOrFail(30);
, выход метода будет распечатываться, говоря Fail! , Это связано с тем, что значение 30 не больше или равно 50, таким образом, код между else
{ }
выполняется вместо оператора If
.
В этом примере мы сказали, что оценка должна увеличиться до 100, что не учитывается вообще. Чтобы учесть, что счет не прошел мимо 100 или, возможно, опустился ниже 0, см. Пример If-Else If-Else .
If-Else If-Else Statement
Следуя примеру If-Else Statement , пришло время ввести инструкцию Else If
. Операция Else If
следует непосредственно после оператора If
в структуре If-Else If-Else , но по сути имеет аналогичный синтаксис, как оператор If
. Он используется для добавления большего количества ветвей в код, чем простой оператор If-Else .
В примере из If-Else Statement в примере указано, что оценка достигает 100; однако никогда не было никаких проверок против этого. Чтобы исправить это, измените метод из инструкции If-Else, чтобы выглядеть так:
static void PrintPassOrFail(int score)
{
if (score > 100) // If score is greater than 100
{
Console.WriteLine("Error: score is greater than 100!");
}
else if (score < 0) // Else If score is less than 0
{
Console.WriteLine("Error: score is less than 0!");
}
else if (score >= 50) // Else if score is greater or equal to 50
{
Console.WriteLine("Pass!");
}
else // If none above, then score must be between 0 and 49
{
Console.WriteLine("Fail!");
}
}
Все эти утверждения будут выполняться по порядку сверху до конца до тех пор, пока не будет выполнено условие. В этом новом обновлении метода мы добавили две новые ветки, которые теперь можно разместить для оценки, выходящего за пределы .
Например, если мы теперь вызвали метод в нашем коде как PrintPassOFail(110);
, результатом будет сообщение «Консольная печать». Ошибка: оценка больше 100! ; и если мы назвали метод в нашем коде, например PrintPassOrFail(-20);
, на выходе будет сказано Ошибка: оценка меньше 0! ,
Вывод операторов
Оператор switch позволяет проверять переменную для равенства по отношению к списку значений. Каждое значение называется случаем, а переменная, включенная, проверяется для каждого случая коммутатора.
Оператор switch
часто более кратким и понятным, чем if...else if... else..
statement при тестировании нескольких возможных значений для одной переменной.
Синтаксис следующий:
switch(expression) {
case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
// you can have any number of case statements
default : // Optional
statement(s);
break;
}
есть отдельные вещи, которые необходимо учитывать при использовании оператора switch
- Выражение, используемое в операторе switch, должно иметь интегральный или нумерованный тип или быть типом класса, в котором класс имеет одну функцию преобразования для интегрального или перечисляемого типа.
- Вы можете иметь любое количество операторов case в коммутаторе. За каждым случаем следует сравнимое значение и двоеточие. Значения для сравнения должны быть уникальными в каждом операторе switch.
- Оператор switch может иметь необязательный случай по умолчанию. Случай по умолчанию может использоваться для выполнения задачи, когда ни один из случаев не является истинным.
- Каждый случай должен заканчиваться оператором
break
если он не является пустой инструкцией. В этом случае исполнение будет продолжаться в случае ниже. Оператор break также может быть опущен, если используетсяgoto case
return
,throw
илиgoto case
.
Пример может быть задан с оценками
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("Excellent!");
break;
case 'B':
case 'C':
Console.WriteLine("Well done");
break;
case 'D':
Console.WriteLine("You passed");
break;
case 'F':
Console.WriteLine("Better try again");
break;
default:
Console.WriteLine("Invalid grade");
break;
}
Если условия оператора являются стандартными булевыми выражениями и значениями
Следующее утверждение
if (conditionA && conditionB && conditionC) //...
точно эквивалентен
bool conditions = conditionA && conditionB && conditionC;
if (conditions) // ...
другими словами, условия внутри оператора «if» просто образуют обычное булево выражение.
Общей ошибкой при написании условных утверждений является явное сравнение с true
и false
:
if (conditionA == true && conditionB == false && conditionC == true) // ...
Это можно переписать как
if (conditionA && !conditionB && conditionC)