2016-07-20 2 views
1

У меня есть этот код:Условный оператор без возвращаемого значения

bool value = false; 
if(value) 
{ 
    Console.Write("true"); 
} 
else 
{ 
    Console.Write("false"); 
} 

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

bool value = false; 
value ? Console.Write("true") : Console.Write("false"); // does not work 
+1

Зачем вам это нужно? Все, что вы получаете, это несколько ключевых штрихов, и вы теряете некоторую удобочитаемость. Вы можете поместить его на одну строку, если хотите. – Maarten

ответ

4

Поместите оператор внутри Console.Write

Console.Write(value ? "true" : "false"); 

или, если вы действительно хотите, чтобы записать значение:

Console.Write(value); 

если вы хотите вызвать 2 различных методов, вы можете написать, если-заявление, в одной строке:

if (value) Method1(); else Method2(); 
+0

Что делать, если есть два разных метода вместо' Console.Write' дважды –

+0

См. Мое редактирование для этого типа проблемы – wertzui

4
bool value = false; 
    Console.Write(value ? "true" : "false"); 

Если метод возвращает значение, то

bool value = false; 
var result = value ? Test1() : Test2(); 

    private int Test1() 
    { 
     return 1; 
    } 

    private int Test2() 
    { 
     return 1; 
    } 
+1

Для этого конкретного примера это нормально. Но если op просто прост для вопроса и на самом деле спрашивал о двух разных операциях, а не о двух разных строковых значениях, это не распространяется на него. Я полагаю, вы можете работать только с любыми требованиями, которые вам даны. Итак, +1. –

+0

Что делать, если вместо 'Console.Write' два разных метода? –

0

добавлял некоторые уточнения к предыдущему ответу. Причина, почему вы не можете сделать это:

value ? Console.Write("true") : Console.Write("false"); 

Это потому, что:

условного оператор (:) возвращает один из двух значений, в зависимости от значения логического выражения.

Источник: MSDN

Ключевое слово здесь "возвращение". Тернарный оператор точно не заменяет оператор if else, он предназначен для назначения. Вы можете, конечно, вызвать метод в трехмерной операции, пока он возвращает логическое значение. Тернарный оператор должен что-то вернуть.

Смежные вопросы