Троичный с логическим условием в c #

1

Если я должен написать этот фрагмент кода, он отлично работает с обычным макетом "if-else".

if(isOn)
{
    i = 10;
}
else
{
    i = 20;
}

Хотя я не уверен, как преобразовать это, используя тернарный оператор

        isOn = true ? i = 1 : i = 0;

Ошибка: Тип условного выражения не может быть определен, потому что нет неявного преобразования между "void" и "void".

EDIT: Answer = i = isOn? 10: 20; i = isOn? 10: 20;

Можно ли это сделать с помощью методов?

if(isOn)
{
    foo();
}
else
{
    bar();
}
  • 0
    Отредактировано, чтобы добавить метод вопрос.
  • 0
    Для вашего редактирования: почему вы хотите сделать это с помощью методов? не достаточно if ясно? также это зависит от того, что возвращают эти методы. Если они не возвращают ничего void то я считаю, что вы не можете использовать троичные операторы.
Показать ещё 2 комментария
Теги:
ternary-operator

7 ответов

11
Лучший ответ

Попробуйте следующее. BTW, он работает только для присвоений значений, а не для вызовов методов.

i = isOn ? 10 : 20;

Справка:

  • 0
    Отлично спасибо. Я отредактировал вопрос, вы знаете, если это возможно с помощью методов?
  • 0
    @MarcC: - Какие твои методы возвращаются? Поскольку ответ зависит от этого
Показать ещё 5 комментариев
5

Вы можете просто попробовать следующее:

i = isOn? 10:20

MSDN говорит:

Условие должно оцениваться как true или false. Если условие истинно, выражение first_expression вычисляется и становится результатом. Если условие ложно, выполняется выражение second_expression и становится результатом. Оценивается только одно из двух выражений.

РЕДАКТИРОВАТЬ:-

Если вы хотите вызывать методы void в условном операторе, вы можете использовать делегаты еще, то использовать терминные операторы для методов невозможно.

И если ваши методы возвращают что-то, попробуйте вот так:

i = isOn ? foo() : bar();    //assuming both methods return int
  • 1
    @MarcC: - Проверьте обновленный ответ!
4

Ты на правильном пути, но немного. i = isOn? 10: 20;

Здесь 10 будет присвоено i если isOn == true а 20 будет присвоено i если isOn == false

2

попробуйте следующее

i = isOn ? 10 :20
2

Вот объяснение, которое могло бы помочь. Утверждение, которое вы ищете, это:

i = isOn ? 10 : 20;

И вот что это значит:

(result) = (test) ? (value if test is true) : (value if test is false);
2

Попробуйте следующее:

i = isOn ? 10 : 20
-3

Тебе нужно:

i = true ? 10 : 20;

где true ваше состояние.

  • 1
    isOn - это bool (условие), указанное в коде OP
  • 0
    ОП уже опубликовал ответ на этот вопрос. я = isOn? 10:20;
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню