Оператор? относится к числу самых примечательных в С#. Он представляет собой условный оператор и часто используется вместо определенных видов конструкций if-then-else. Оператор?иногда еще называют тернарным,поскольку для него требуются три операнда. Ниже приведена общая форма этого оператора.
Выражение1? Выражение2: Выражение3;
Здесь Выражение1 должно относиться к типу bool, а Выражение2 и Выражение3 —
к одному и тому же типу. Обратите внимание на применение двоеточия и его местоположение в операторе?.
Значение выражения? определяется следующим образом. Сначала вычисляется
Выражение1. Если оно истинно, то вычисляется Выражение2, а полученный результат определяет значение всего выражения? в целом. Если же Выражение1 оказывается ложным, то вычисляется Выражение3, и его значение становится общим для всего выражения?.
absval = val < 0? -val: val; // получить абсолютное значение переменной val
Присваивать переменной результат выполнения оператора? совсем не обязательно. Например, значение, которое дает оператор?, можно использовать в качестве аргумента при вызове метода. А если все выражения в операторе?относятся к типу bool, то такой оператор может заменить собой условное выражение в цикле или операторе if. В приведенном ниже примере программы выводятся результаты деления числа 100 только на четные, ненулевые значения.
|
|
// Разделить только на четные, ненулевые значения.
using System;
class NoZeroDiv2
{
static void Main()
{
for (int i = -5; i < 6; i++)
if (i!= 0? (i % 2 == 0): false)
Console.WriteLine("100 / " + i + " равно " + 100 / i);
}
}
ГЛАВА
Управляющие операторы
Управляющие операторы
Выбора: if; switch;
Итерационные: for; while; do-while; foreach;
Перехода: break; continue; goto; return; throw;
Оператор if
if(условие) оператор;
else оператор;
if(условие) { последовательность операторов}
else { последовательность операторов }
Вложенные операторы if
if (i == 10) {
if(j < 20) a = b;
if(k > 100) с = d;
else a = с; // этот оператор else связан с оператором if(k > 100)
}
else a = d; // этот оператор else связан с оператором if(i == 10)