Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Почему можно использовать throw в тернарном операторе, в котором по две стороны от двоеточия должны стоять выражения?

11.03.2019, 16:51. Показов 1005. Ответов 6
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
 
namespace CSrharpApplicationTest
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var x = true ? throw new Exception() : 0;
        }
    }
}
Почему это компилируется? Почему можно использовать throw в тернарном операторе, в котором по две стороны от двоеточия должны стоять выражения?

Добавлено через 3 минуты
Как сделали, что throw тут допустим?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2019, 16:51
Ответы с готовыми решениями:

Ошибка в тернарном операторе
Всем доброго времени суток! Буду благодарен за помощь, а то что-то никак не прекращается мой...

Ошибка в тернарном операторе
Код: #include <iostream> using namespace std; int main() { int a, b, x; cin >> a >> b ;...

Проверка на ноль в тернарном операторе
Короче говоря нужно написать калькулятор при помощи тернарной операции вот что я написал: char c =...

Комбинаторика.Сколько различных слов можно получить перестановкой букв слова КОНДЕНСОВАНІСТЬ (укр.) ? буквы Н не должны стоять рядом
Сколько различных слов можно получить перестановкой букв слова КОНДЕНСОВАНІСТЬ (укр.) ? буквы Н не...

6
Эксперт .NET
5243 / 3444 / 1442
Регистрация: 09.05.2015
Сообщений: 8,388
11.03.2019, 16:51 2
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Почему это компилируется?
Почему это не должно компилироваться? Ведь по сути это эквивалент
C#
1
2
3
4
5
6
            int x;
 
            if (true)
                throw new Exception();
            else
                x = 0;
2
Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
11.03.2019, 17:50  [ТС] 3
Someone007, тернарный оператор разворачивается в if, верно понимаю?
0
Эксперт .NET
9294 / 6659 / 1077
Регистрация: 21.01.2016
Сообщений: 25,092
11.03.2019, 18:27 4
Соколиный глаз, потому, что в C# 7.0 throw стало выражением (expression), а не инструкцией (statement), что и сделало возможным такие финты.
1
Alvin Seville
334 / 266 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
11.03.2019, 18:38  [ТС] 5
Usaga, выражение, как понимаю, возвращает значение, но что тогда возвращает throw?
0
Эксперт .NET
9294 / 6659 / 1077
Регистрация: 21.01.2016
Сообщений: 25,092
11.03.2019, 18:44 6
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Соколиный глаз, видимо требуемый в выражении тип) Представьте, что на месте throw будет метод (совершенно корректная конструкция), внутри которого выбрасывается исключение.
1
Эксперт .NET
5243 / 3444 / 1442
Регистрация: 09.05.2015
Сообщений: 8,388
11.03.2019, 18:45 7
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
тернарный оператор разворачивается в if, верно понимаю?
https://sharplab.io/#v2:EYLgtg... WkZBNmUmUA
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2019, 18:45

можно ли использовать процедуру в операторе условного перехода
if u="procedure" then writeln('verno'); else ('Neverno!pravilnii otvet="procedure") можно ли...

Почему нельзя использовать в операторе case переменные, которые определены как #define
Я не понимаю, почему Visual Studio ругается на строку с case в коде. Вроде все правильно. Если там...

Почему мы должны использовать XMLHttpRequest асинхронно
Блокирует поток UI или что? Кто Знает подскажите. За ранее спасибо.

Как правильно должны стоять шестерни?
Таймер микроволновой печи Samsung G2711N модель DE45-00003A Не могу сообразить, как правильно...

Какие числа должны стоять в нижнем ряду
Всем здравствуйте! :) Вот небольшая головоломка, в которой я так и не нашел пока что...

Сколько существует перестановок букв а,c,f,m,p,r,t,x, если между а и с должны стоять 3 буквы?
Подскажите пожалуйста, как решить эти задачи(в универе комбинаторике не успели объяснить, и сказали...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.