Why can't I use break in a C# ternary expression?

99封情书 提交于 2019-12-31 07:32:09

问题


I am trying to convert the if else clause to a ternary within a while loop, however it's not allowing me to have a break after the question mark, pointing an error at the break as an invalid expression.

How would I go about turning this simple if else into a ternary like so.

while (true)
{
    Console.WriteLine("Enter 3 words seperated by spaces: ");
    var input = Console.ReadLine();
    //input == "" ? break : ConvertToPascal(input);
    if (input == "")
        break;
    else
        ConvertToPascal(input);
    }
}

回答1:


It isn't possible using the ternary operator, but you can simplify your code structure as follows:

string input;
do {
    Console.WriteLine("Enter 3 words seperated by spaces: ");
    input = Console.ReadLine();
    if (input != "") {
        ConvertToPascal(input);
    }
} while(input != "");



回答2:


Because the ternary is not a shorter way to write an if-else structure, it's a short way to write an expression that picks one of two values based on some condition. break is a flow-control statement, not a value.

If it helps, think of:

someVar = cond ? a : b;

as of:

someVar = getValue(cond);


来源:https://stackoverflow.com/questions/49084976/why-cant-i-use-break-in-a-c-sharp-ternary-expression

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!