Switch语句和Message.Contains

3

你能否编写一个switch语句,检查语句是否成立?

所以,代码可以改为:

if (ex.Message.Contains("hnummer"))
{
    MessageBox.Show("Deze laptop staat al in de lijst");
}
if (ex.Message.Contains("serienummmer"))
{
    MessageBox.Show("Dit serienummer staat al in de lijst");
}
if (ex.Message.Contains("olcnummer"))
{
    MessageBox.Show("Dit OLC nummer staat al in de lijst");
}

一个 Switch 语句?

2
猜测是不行的,因为它必须是编译时常量。 - V4Vendetta
1
你可以创建一个标记字符串和委托的字典。 - H H
1个回答

4

另一种方法是使用字典(Dictionary)

//of course, the "staat al in de lijst" could be a constant, as we like DRY
var messageDictionary = new Dictionary<string, string>() {
   {"hnummer", "Deze laptop staat al in de lijst"},
   {"serienummmer", "Dit serienummer staat al in de lijst"}
}

如果您想要针对每个“成功”包含测试的多个消息框,可以使用类似于以下代码的方式。

foreach (var kvp in messageDictionary) {
      if (ex.Message.Contains(kvp.Key))
      Messagebox.Show(kvp.Value);
      //break; if you wanna stop after first match.
}

或者,如果您想测试所有“包含”但仅获得一个聚合消息

var res = string.Empty;
foreach (var kvp in messageDictionary) {
   if (ex.Message.Contains(kvp.Key))
          res +=kvp.Value;
}
MessageBox.Show(res);

或者一个“不要这样做”的一行方式

MessageBox.Show(string.Join("\n", messageDictionary.Select(m => ex.Message.Contains(m.Key) ? m.Value : string.Empty)));

不确定这是否是搜索函数的一部分...(“包含”方法表明此类用法) - walther

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接