为什么我不能在C#三元表达式中使用break?

我试图将if else子句转换为while循环中的三元组,但是它不允许我在问号后面有一个中断,将中断处的错误指向为无效表达式。

我怎么会把这个简单的东西变成这样的三元组。

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

使用三元运算符是不可能的,但您可以按如下方式简化代码结构:

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

因为三元不是编写if-else结构的较短方式,所以编写一个基于某些条件选择两个值之一的表达式是一种简短的方法。 break是一个流控制语句,而不是一个值。

如果有帮助,请考虑:

 someVar = cond ? a : b; 

作为:

 someVar = getValue(cond);