Conditional operator without return value

前端 未结 3 1885
青春惊慌失措
青春惊慌失措 2021-01-16 07:15

I have this code:

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

and I want to short

相关标签:
3条回答
  • 2021-01-16 07:55

    Just adding some precisions to the previous answer. The reason why you can't do this:

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

    Is because:

    The conditional operator (?:) returns one of two values depending on the value of a Boolean expression.

    source: MSDN

    The keyword here is "return". The ternary operator doesn't exactly replace an if/else statement, it is meant for assignment. You can of course call a method within a ternary operation as long as it returns a boolean value. A ternary operator must return something.

    0 讨论(0)
  • 2021-01-16 07:57
        bool value = false;
        Console.Write(value ? "true" : "false");
    

    If method returns a value then

    bool value = false;
    var result = value ? Test1() : Test2();
    
      private int Test1()
        {
            return 1;
        }
    
        private int Test2()
        {
            return 1;
        }
    
    0 讨论(0)
  • 2021-01-16 08:12

    Put the operator inside Console.Write

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

    or if you really want to write the value:

    Console.Write(value);
    

    if you want to call 2 different Methods, you can write your if-statement in one line:

    if (value) Method1(); else Method2();
    
    0 讨论(0)
提交回复
热议问题