【发布时间】:2020-07-21 19:44:14
【问题描述】:
savetext是一个随机长度+“!Command1”的字符串
switch (savetext)
{
case savetext.EndsWith("! Command1"):
System.Diagnostics.Debug.WriteLine("Test1");
break;
case savetext.EndsWith("! Command2"):
System.Diagnostics.Debug.WriteLine("Test2");
break;
default:
System.Diagnostics.Debug.WriteLine(savetext)
break;
}
输出应该是“Test1”,但我的方法并没有像我想要的那样工作。我该如何解决这个问题?
【问题讨论】:
-
在 C# 中使用 if/else(可以在 switch 语句中使用模式匹配来做到这一点,但它比等效的 if/else 更丑)
-
您只能在 switch 语句中为 case 指定常量值。你应该在这里使用 if/else if/else
-
@OguzOzgul 那是not entirely true。你可以写成
case var _ when savetext.EndsWith("! Command1"),但你也可以写成if (savetext.EndsWith("! Command1")) -
或者,获取字符串的最后 10 个字符并使用
case "! Command1": -
@OguzOzgul
var _是一个模式,when在文档中被分组在“模式匹配”下。请参阅我之前的评论,了解如何将这些结合起来做 OP 想要的事情
标签: c# string switch-statement