Тернарный оператор си шарп

Условный оператор ?: , известный как тернарный условный оператор, вычисляет логическое выражение и возвращает результат вычисления одного из двух выражений в зависимости от того, чему равно значение логического выражения: true или false . The conditional operator ?: , also known as the ternary conditional operator, evaluates a Boolean expression and returns the result of one of the two expressions, depending on whether the Boolean expression evaluates to true or false . Начиная с C# 7.2, условное выражение REF возвращает ссылку на результат одного из двух выражений. Beginning with C# 7.2, the conditional ref expression returns the reference to the result of one of the two expressions.

Для условного оператора используется следующий синтаксис: The syntax for the conditional operator is as follows:

Выражение condition должно принимать значение true или false . The condition expression must evaluate to true or false . Если condition принимает значение true , вычисляется выражение consequent , а результат становится результатом операции. If condition evaluates to true , the consequent expression is evaluated, and its result becomes the result of the operation. Если condition принимает значение false , вычисляется выражение alternative , а результат становится результатом операции. If condition evaluates to false , the alternative expression is evaluated, and its result becomes the result of the operation. Вычисляется только выражение consequent или alternative . Only consequent or alternative is evaluated.

Параметры consequent и alternative должны быть одинакового типа, или должно существовать неявное преобразование из одного типа в другой. The type of consequent and alternative must be the same, or there must be an implicit conversion from one type to the other.

Условный оператор имеет правую ассоциативность, то есть выражение формы. The conditional operator is right-associative, that is, an expression of the form

вычисляется как is evaluated as

Читайте также:  Oneplus 6 характеристики отзывы

Вы можете использовать следующий мнемонический прием, чтобы запомнить, как оценивается условный оператор: You can use the following mnemonic device to remember how the conditional operator is evaluated:

В следующем примере иллюстрируется использование условного оператора: The following example demonstrates the usage of the conditional operator:

Условное выражение REF Conditional ref expression

Начиная с C# 7.2, условное выражение REF можно использовать для того, чтобы вернуть ссылку на результат одного из двух выражений. Beginning with C# 7.2, you can use the conditional ref expression to return the reference to the result of one of the two expressions. Можно назначить эту ссылку ссылочной локальной переменной или ссылочной локальной переменной только для чтения или же использовать ее как возвращаемое ссылочное значение или как ref параметр метода. You can assign that reference to a ref local or ref readonly local variable, or use it as a reference return value or as a ref method parameter.

Для условного выражения REF используется следующий синтаксис: The syntax for the conditional ref expression is as follows:

Подобно исходному условному оператору, условное выражение REF вычисляет только одно из двух выражений: consequent или alternative . Like the original conditional operator, the conditional ref expression evaluates only one of the two expressions: either consequent or alternative .

Для условного выражения REF тип consequent и alternative должны совпадать. In the case of the conditional ref expression, the type of consequent and alternative must be the same.

В следующем примере иллюстрируется использование условного выражения REF: The following example demonstrates the usage of the conditional ref expression:

Условный оператор и оператор if..else Conditional operator and an if..else statement

Если использовать условный оператор с оператором if-else, может получиться более лаконичный код в случаях, когда необходимо условно вычислить значение. Use of the conditional operator instead of an if-else statement might result in more concise code in cases when you need conditionally to compute a value. В следующем примере иллюстрируются два вида классификации целого числа как положительного или отрицательного: The following example demonstrates two ways to classify an integer as negative or nonnegative:

Читайте также:  Как использовать смартфон в качестве монитора

Возможность перегрузки оператора Operator overloadability

Определяемый пользователем тип не может перегружать условный оператор. A user-defined type cannot overload the conditional operator.

Спецификация языка C# C# language specification

Дополнительные сведения см. в разделе Условный оператор статьи Предварительная спецификация C# 6.0. For more information, see the Conditional operator section of the C# language specification.

См. сведения об условном ссылочном выражении в примечании к функциям. For more information about the conditional ref expression, see the feature proposal note.

Тернарный оператор (?) относится к числу самых примечательных в C#.
Он представляет собой условный оператор и часто используется вместо определенных видов конструкций if-then-else.

Оператор унаследован из языка С++ без изменений, как очень эффективная конструкция. Если в коде программы (кроме комментариев) встречается символ «?», то это может быть только тернарный оператор, или синтаксическая ошибка.

Ниже приведена общая форма этого оператора:
Выражение1 ? Выражение2 : ВыражениеЗ;
Здесь Выражение1 должно относиться к типу bool, а Выражение2 и ВыражениеЗ — к одному и тому же типу.
Обратите внимание на применение двоеточия и его местоположение в операторе ?.
Значение выражения ? определяется следующим образом.
Сначала вычисляется Выражение1.
Если оно истинно, то вычисляется Выражение2, а полученный результат определяет значение всего выражения ? в целом.
Если же Выражение1 оказывается ложным, то вычисляется ВыражениеЗ, и его значение становится общим для всего выражения ?:

Присваивать переменной результат выполнения оператора ? совсем не обязательно. Например, значение, которое дает оператор ?, можно использовать в качестве аргумента при вызове метода.
А если все выражения в операторе ? относятся к типу bool, то такой оператор может заменить собой условное выражение в цикле или операторе if.

Пример использования тернарного оператора:

Результат:

Перейдем к рассмотрению более традиционных условных операторов в языке C#.

Условные операторы – это конструкции, которые используют условные выражения для управления ходом выполнения программы.

Условный оператор if

Условный оператор if – используется в случаях, когда выполнение инструкции, или набора инструкций, зависит от некоторого логического выражения.

В языке C#, есть две формы условного оператора if: с неполным и полным ветвлением.

if с неполным ветвлением

Оператор с неполным ветвлением имеет следующий синтаксис:

Пример на языке C#:

Читайте также:  Abs excel что это

Для выполнения нескольких инструкция, необходимо взять их в операторные скобки:

if с полным ветвлением

В операторе if с полным ветвлением, дополнительно используется ключевое слово else:

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

Пример использования оператора if

Рассмотрим задачу определения какой четверти координатной плоскости принадлежит точка с координатами (x, y). Будем считать, что точка не может лежать на осях.

Код программ для определения в какой четверти лежит заданная точка:

Тернарный условный оператор ?:

Тернарный оператор – единственный оператор языка С#, который работает сразу с тремя операндами, в зависимости от результата условия, которое задано в первом операнде, возвращает значение второго(если первый – true), или третьего(если первый – false) операнда. При этом второй и третий должны быть одинакового типа данных.

Тернарный оператор в качестве операндов может принимать другие тернарные операторы.

Если переписать код программы из предыдущего примера, с использованием тернарного оператора, то получим:

Как можно видеть, вся логика работы программы уместилась в одну строку кода.

Условный оператор switch

Конструкция switch позволяет сравнивать значение выражения сразу с несколькими вариантами.

Рассмотрим код, который конвертирует оценку пятибалльной шкалы из числа в текстовое представление:

С использованием switch код будет выглядеть так:

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

Для перехода с одного блока case в другой, можно использовать оператор goto case:

Блок default не обязательный. Если он не указан, а соответствия нет, то происходит выход из switch.

Использование break после операторов return, throw и goto case не обязательное.

Начиная с C# версии 7.0, выражение соответствия может быть любым выражением отличным от null. В предыдущих версиях языка допускались только: целочисленные, символьные, строковые, логические типы данных и перечисления.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector