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

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

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

我将如何把这个简单的 if else 变成这样的三元。

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 是一个 flow-control 语句,不是一个值。

如果有帮助,请考虑:

someVar = cond ? a : b;

截至:

someVar = getValue(cond);