Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我不能在C#三元表达式中使用break吗?_C#_Break_Ternary Operator - Fatal编程技术网

为什么可以';我不能在C#三元表达式中使用break吗?

为什么可以';我不能在C#三元表达式中使用break吗?,c#,break,ternary-operator,C#,Break,Ternary Operator,我试图在while循环中将if-else子句转换为三元,但是它不允许在问号后有一个中断,将中断处的错误作为无效表达式 while (true) { Console.WriteLine("Enter 3 words seperated by spaces: "); var input = Console.ReadLine(); //input == "" ? break : ConvertToPascal(input); if (input == "")

我试图在while循环中将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);
    }
}
我如何将这个简单的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);
    }
}

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

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
结构的较短方法,所以它是写一个表达式的较短方法,根据某些条件从两个值中选择一个<代码>中断是一个流控制语句,而不是一个值

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

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

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

你已经找到了一个重要的词:表达<代码>中断是一条语句。C#中的语句不是表达式(尽管许多表达式也可以用作语句,因此反过来也是如此)。问问自己:编译器应该如何将
break
赋值给
输入变量?将
if
转换为三元变量有什么意义?我可以理解使用它来内联简单的赋值,但是当涉及到流逻辑(例如,
break
)时,使用
if
比尝试内联三元组要清楚得多。有一个语言建议。