问题
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