2014-04-13 74 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语句,以防万一任何条件匹配。