2011-08-02 65 views
3

東西基本上沿着線:在switch語句中使用對象的string.contains方法?

switch (string.contains(x)) 
{ 
    case(x = "asdf"): 
     break; 
    case(x = "jkl"): 
     break; 
    case(x = "qwerty"): 
     break; 
} 

編輯:對不起球員,我最想要的是有switch語句檢查字符串幾個不同的值,並根據其數值發現在字符串內部執行相應的代碼。

+0

有多種問題...有一個,檢查在switch語句中的布爾是...有點愚蠢,因爲只有兩種可能的情況,而且它必須始終保持不變。你正在使用賦值運算符'='而不是相等運算符'==',我不知道你爲什麼要這樣做,而且你的任何情況塊都沒有代碼。 –

+0

你能解釋一下你想要的嗎?似乎沒有人理解你,因爲你沒有寫出有效的C#。 –

+0

對不起,我最理想的是讓switch語句爲幾個不同的值檢查字符串,並根據它在字符串內找到哪些值,執行相應的代碼。 – paIncrease

回答

3

你的意思是這個,只要我能弄明白:

if (string.Contains(x)) 
{ 
    switch (x) 
    { 
     case "asdf": 
      break; 
     case "jkl": 
      break; 
     case "qwerty": 
      break; 
    } 
} 
+1

+1用於翻譯op的原始意圖 –

+0

不,因爲我想根據字符串包含的那些(「asdf」等)執行幾個不同的事情。我將不得不if/elseif上面的代碼3x每次更改x的值。 – paIncrease

+1

所以,只要把它變成一個函數,把'x'作爲它的參數,並用你所擁有的各種值調用函數三次。 –

4

的包含(字符串s)方法返回一個布爾值,所以它不是在switch語句允許的。

3

switch關鍵字有一些魔力(查找表),因爲它永遠不會拋出異常。

也可以同樣簡潔改寫爲:

if (x.Contains("asdf")) 
{} 
else if (x.Contains("jkl")) 
{} 
else if (x.Contains("qwerty")) 
{} 
-1

你有沒有嘗試過這樣的:

 
    switch (true) 
    { 
     case string.Contains("asdf"): 
      break; 
     case string.Contains("jkl"): 
      break; 
     case string.Contains("qwerty"): 
      break; 
    } 
+0

不能編譯。 「一個恆定的值是預期的」 –

+2

這個概念適用於VB,但不適用於c#,只是想把它拋出去。 – abend