SwitchCase语句中的TryParse

时间:2018-09-21 04:28:21

标签: c#

我正在制作一个计算器,并且正在使用switch-case语句来确定用户单击按钮时的操作。当用户仅按下一个数字(0-9)时,我只想简单地将数字添加到当前字符串的末尾。尽管我想知道是否有一种更简单的方法来评估字符串是否是case语句中的数字,但这是一项容易的任务。

换句话说,我可以简化以下内容吗?

case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":

//code to execute here

我知道我可以早些时候调用TryParse并运行一个单独的代码块,但是我想知道是否有一种方法可以完成诸如case myString.TryParse():

这样的操作

谢谢。

3 个答案:

答案 0 :(得分:5)

当已经有简单的库可以处理这个问题时,您肯定会走很长一段路:)

尝试System.Char.IsDigit(numericChar)

还有许多其他方法可以轻松地做到这一点,只需在Google上搜索一下即可:)

答案 1 :(得分:1)

您可以尝试使用pattern matching,但是我认为指定为原始帖子应该更快,所以我不建议这样做,但实际上您可以按照要求进行操作:

string a = "5";
switch (a)
{
   case var digit when char.IsDigit(a[0]):
     var intDigit = int.Parse(digit);
     ...
     break;
   ...
   <other cases>
}

答案 2 :(得分:0)

switch语句不适合查找多个可能的值,最好使用一堆if else语句

if(Char.IsDigit(inputString))
{

}
else if(someCondition)
{
}
else if(someCondition2)
{
}