【问题标题】:Ternary operator in a while loop in C#C#中while循环中的三元运算符
【发布时间】:2020-07-07 13:10:54
【问题描述】:

我对编程很陌生,我想知道如果数字对三元运算符有效,我怎么能打破循环?我习惯用 if-else 来做,但在这种情况下,我不知道正确的语法来做它,或者是否有可能。 谢谢!

while (!valid)
{
     .....
     Console.Write("Enter your phone number : ");
     string noTelephone = Console.ReadLine();
     string message = ValiderTelephone(noTelephone) ? "Numéro valide" : "Numéro invalide";
}

【问题讨论】:

  • 你不能,除非你使用throw 表达式(不要)。 if/else 是正确的语法。
  • 三元运算符是operator,它返回一些value,而不是改变控制flow。换成if
  • 您可以执行类似valid=ValiderTelephone(noTelephone); string message = valid ? "Numéro valide" : "Numéro invalide"; 的操作,这样下一个循环将不会执行,因为while 条件!valid 将为假。

标签: c# while-loop boolean conditional-statements conditional-operator


【解决方案1】:

如果您迫切需要使用三元的东西,我会按照磁控管在 cmets 中指示的方式进行操作,但实际上,如果您是将循环直到它有效,因为您不使用您设置的消息!这意味着当代码到达可以将消息用于某事的地步时,它肯定是“数字有效”

怎么样:

Console.WriteLine("Enter number:");
string num = Console.ReadLine();
while(!ValidNumber(num)){
  Console.WriteLine("Invalid number, try again:");
  num = Console.ReadLine();
}
string message = "Number valid";

或者更好:

private string Ask(string question){
  Console.WriteLine(question);
  return Console.ReadLine();
}

...

string num = Ask("Enter number:");
while(!ValidNumber(num))
  num = Ask("Invalid number, try again:");

【讨论】:

  • 感谢您的帮助!我知道有更好的方法可以做到这一点,但我仍在学习,我想尝试所有不同的工具,以便更好地了解什么更有效以及为什么。 :)
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 2017-05-21
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
相关资源
最近更新 更多