Nig*_*ker 4 .net c# refactoring
我有这个很长的if else代码
if (errorNumbers.Length == 6)
{
if (errorNumbers.Substring(0,4).Equals("1101") || errorNumbers.Substring(0,4).Equals("2121"))
{
retStr = "AutoRepickAfterPickError";
}
else if (errorNumbers.Substring(0, 4).Equals("1301") || errorNumbers.Substring(0, 4).Equals("2321"))
{
retStr = "AutoRepickAfterLAlignError";
}
else if (errorNumbers.Substring(0, 4).Equals("1401") || errorNumbers.Substring(0, 4).Equals("2221"))
{
retStr = "AutoRepickAfterCAlignError";
}
else if (errorNumbers.Substring(0, 4).Equals("1501") || errorNumbers.Substring(0, 4).Equals("2041"))
{
retStr = "AutoRepicksAfterManualRecovery";
}
Run Code Online (Sandbox Code Playgroud)
等等.....
我怎么能把它重写成更好的东西.试着在这里学习一些新东西,我在.net 2.0中.感谢帮助.
Alm*_*und 15
我会将错误代码映射到字典中,如下所示:
string errorCode = errorNumbers.Substring(0, 4);
Dictionary<string, string> map = new Dictionary<string,string>();
map.Add("1501", "AutoRepicksAfterManualRecovery");
map.Add("2041", "AutoRepicksAfterManualRecovery");
map.Add("1401", "AutoRepickAfterCAlignError");
map.Add("2221", "AutoRepickAfterCAlignError");
map.Add("1301", "AutoRepickAfterPickError");
map.Add("2121", "AutoRepickAfterPickError");
// etc
if(!map.ContainsKey(errorCode))
throw new Exception("Invalid error code");
return map[errorCode];
Run Code Online (Sandbox Code Playgroud)
Sir*_*ver 11
这应该是非常简单的
if (errorNumbers.Length == 6)
{
string errNo = errorNumbers.Substring(0, 4);
switch (errNo)
{
case "1101":
case "2121":
retStr = "AutoRepickAfterPickError";
break;
case "1301":
case "2321":
retStr = "AutoRepickAfterLAlignError";
break;
case "1401":
case "2221":
retStr = "AutoRepickAfterCAlignError";
break;
case "1501":
case "2041":
retStr = "AutoRepicksAfterManualRecovery";
break;
}
}
Run Code Online (Sandbox Code Playgroud)
还要注意,与Java不同,在C#中你可以比较字符串==
.
"123" == "456"
做同样的事情"123".Equals("456")
.