2014-04-13 294 views
-3

我的方法/函數總是返回null,我不明白爲什麼。我確認輸入密鑰是有效的情況。 請給它看看。謝謝!方法總是返回null

public string GetCode(string key) 
{ 
    string result = null; 
    switch (key) 
    { 
     case "51118": 
      result = "27"; 
      break; 
     case "44559": 
      result = "28"; 
      break; 
     case "52286": 
      result = "52"; 
      break; 
     case "204632": 
      result = "53"; 
      break; 
     case "82097": 
      result = "31"; 
      break; 
     case "159446": 
      result = "39"; 
      break; 
     case "104361": 
      result = "33"; 
      break; 
    } 
    return result; 
} 

編輯:我很抱歉,我的壞!似乎沒有錯。問題是,顯然在修理開關後,我意外地把它弄亂了,並改變了鑰匙,所以它代表了另一個參數。 至少我學到了一些東西。多謝你們!

+6

*您是如何確認您的輸入實際上是其中一種選擇? (你應該考慮使用'Dictionary '......的方法更簡單。) –

+1

您是否嘗試添加默認情況來驗證輸入是上述情況之一? +什麼Skeet一如既往地說haha –

+1

只是爲了調試它用'return result +'替換'return result;':「+ key;'並檢查結果。 – csharpwinphonexaml

回答

2

我會專注於key的說法。

爲什麼不在key上撥打Trim()來防止整個琴絃開頭和結尾的空白?

switch (key.Trim()) 
    { 
    } 

另一個很好的補充,應該是應該拋出一個默認的情況下,ArgumentException

switch (key.Trim()) 
    { 
     .... 
     default: 
      throw new ArgumentException("key", string.Format("Given key '{0}' is not currently supported", key)); 
    } 

現在,這些應該是我想你的情況做的第一個步驟,他們應該引導你解決整個問題,因爲ArgumentException會告訴你什麼是實際問題和Trim()應該避免與空白問題很多。

1

除了上面所有的解釋,我想補充一點,你應該總是添加一個默認情況到你的switch語句,以防萬一任何條件匹配。