为什么可以';我不能在C#三元表达式中使用break吗?
我试图在while循环中将if-else子句转换为三元,但是它不允许在问号后有一个中断,将中断处的错误作为无效表达式为什么可以';我不能在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 (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
比尝试内联三元组要清楚得多。有一个语言建议。