2014-01-22 171 views
4

是否可以在switch語句中檢查Message.Contains語句?開關語句Message.Contains

因此,不是這樣的:

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

你有沒有嘗試它呢? – Heslacher

+2

不要猜測,因爲它必須是編譯時間常量 – V4Vendetta

+1

您可以創建一個標記字符串和委託字典。 –

回答

4

另一種方法是使用字典

//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); 

或「不這樣做」 oneliner方式

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

如果這是某些搜索功能的一部分,則不會(...)「(含有」方法暗示此類用法) – walther

+0

@walther是,已編輯。 –