一步一步去掉这一类switch Case
先亮相“这一类”
Get_MCODE_Desc
public static string Get_MCODE_Desc(string MCODE)
{
switch (MCODE)
{
case "101000":
return "链路检测(Network Management)";
case "101001":
return "业务前置机签到交易(Sign On)";
case "101002":
return "业务前置机签退交易(Sign Off)";
case "101010":
return "订购关系查询(Order Relationship Query)";
case "101071":
return "子应用状态查询(Sub_Application status Query)";
case "101011":
return "发卡请求(空中、写卡器)(Create Sub Application Request)";
case "101012":
return "卡片操作结果通知(写卡器)(Terminal Card Operation Result)";
case "101021":
return "业务前置机挂失通知(Prehost Report Of Loss)";
case "101022":
return "解挂通知(Cancel Report Of Loss)";
case "101031":
return "注销请求(空中、写卡器)(Cancellation Request)";
case "101032":
return "废卡请求(Annul Card Request)";
case "101041":
return "个人化信息更新请求(空中)(Update Sub_Application)";
case "101051":
return "恢复企业初始主控密钥(Reload Keys)";
case "101061":
return "信息服务通知(Message Send)";
case "101062":
return "信息状态查询(Message Status Query)";
case "101081":
return "机具状态数据上报(Terminal Status)";
case "101091":
return "卡片操作请求(Card Operation Request)";
case "102011":
return "空中卡片操作结果通知(Air Card Operation Result)";
case "102021":
return "一卡通业务前置机应用停止通知(Prehost Application Stop)";
case "102031":
return "信息查询请求(Message Query Request)";
case "102041":
return "服务系统挂失通知(ServiceSystem Report Of Loss)";
case "108001":
return "企业客户端查询前置状态(Query PreHost Status)";
}
return "未知交易码";
}
}
{
switch (MCODE)
{
case "101000":
return "链路检测(Network Management)";
case "101001":
return "业务前置机签到交易(Sign On)";
case "101002":
return "业务前置机签退交易(Sign Off)";
case "101010":
return "订购关系查询(Order Relationship Query)";
case "101071":
return "子应用状态查询(Sub_Application status Query)";
case "101011":
return "发卡请求(空中、写卡器)(Create Sub Application Request)";
case "101012":
return "卡片操作结果通知(写卡器)(Terminal Card Operation Result)";
case "101021":
return "业务前置机挂失通知(Prehost Report Of Loss)";
case "101022":
return "解挂通知(Cancel Report Of Loss)";
case "101031":
return "注销请求(空中、写卡器)(Cancellation Request)";
case "101032":
return "废卡请求(Annul Card Request)";
case "101041":
return "个人化信息更新请求(空中)(Update Sub_Application)";
case "101051":
return "恢复企业初始主控密钥(Reload Keys)";
case "101061":
return "信息服务通知(Message Send)";
case "101062":
return "信息状态查询(Message Status Query)";
case "101081":
return "机具状态数据上报(Terminal Status)";
case "101091":
return "卡片操作请求(Card Operation Request)";
case "102011":
return "空中卡片操作结果通知(Air Card Operation Result)";
case "102021":
return "一卡通业务前置机应用停止通知(Prehost Application Stop)";
case "102031":
return "信息查询请求(Message Query Request)";
case "102041":
return "服务系统挂失通知(ServiceSystem Report Of Loss)";
case "108001":
return "企业客户端查询前置状态(Query PreHost Status)";
}
return "未知交易码";
}
}
再来去掉的方法:
StrCodeDescription
/// <summary>
///
/// </summary>
/// <param name="iCode">传入业务代码</param>
/// <returns>返回业务描述</returns>
public static string StrCodeDescription(int iCode)
{
string strResult;
Dictionary<int, String> mCodeDescription= new Dictionary<int, string>
{
{101000, "链路检测(Network Management)"},
{101001, "业务前置机签到交易(Sign On)"},
{101002, "业务前置机签退交易(Sign Off)"},
{101010, "订购关系查询(Order Relationship Query)"},
{101011, "发卡请求(空中、写卡器)(Create Sub Application Request)"},
{101012, "卡片操作结果通知(写卡器)(Terminal Card Operation Result)"},
{101021, "业务前置机挂失通知(Prehost Report Of Loss)"},
{101022, "解挂通知(Cancel Report Of Loss)"},
{101031, "注销请求(空中、写卡器)(Cancellation Request)"},
{101032, "废卡请求(Annul Card Request)"},
{101041, "个人化信息更新请求(空中)(Update Sub_Application)"},
{101051, "恢复企业初始主控密钥(Reload Keys)"},
{101061, "信息服务通知(Message Send)"},
{101062, "信息状态查询(Message Status Query)"},
{101071, "子应用状态查询(Sub_Application status Query)"},
{101081, "机具状态数据上报(Terminal Status)"},
{101091, "卡片操作请求(Card Operation Request)"},
{102011, "空中卡片操作结果通知(Air Card Operation Result)"},
{102021, "一卡通业务前置机应用停止通知(Prehost Application Stop)"},
{102031, "信息查询请求(Message Query Request)"},
{102041, "服务系统挂失通知(ServiceSystem Report Of Loss)"},
{108001, "企业客户端查询前置状态(Query PreHost Status)"}
};
strResult = "未知交易码";
foreach (var item in mCodeDescription)
{
//int iSearch = Search(item., 0, 21, 11);
if(item.Key == iCode)
{
strResult = item.Value;
}
}
return strResult;
}
///
/// </summary>
/// <param name="iCode">传入业务代码</param>
/// <returns>返回业务描述</returns>
public static string StrCodeDescription(int iCode)
{
string strResult;
Dictionary<int, String> mCodeDescription= new Dictionary<int, string>
{
{101000, "链路检测(Network Management)"},
{101001, "业务前置机签到交易(Sign On)"},
{101002, "业务前置机签退交易(Sign Off)"},
{101010, "订购关系查询(Order Relationship Query)"},
{101011, "发卡请求(空中、写卡器)(Create Sub Application Request)"},
{101012, "卡片操作结果通知(写卡器)(Terminal Card Operation Result)"},
{101021, "业务前置机挂失通知(Prehost Report Of Loss)"},
{101022, "解挂通知(Cancel Report Of Loss)"},
{101031, "注销请求(空中、写卡器)(Cancellation Request)"},
{101032, "废卡请求(Annul Card Request)"},
{101041, "个人化信息更新请求(空中)(Update Sub_Application)"},
{101051, "恢复企业初始主控密钥(Reload Keys)"},
{101061, "信息服务通知(Message Send)"},
{101062, "信息状态查询(Message Status Query)"},
{101071, "子应用状态查询(Sub_Application status Query)"},
{101081, "机具状态数据上报(Terminal Status)"},
{101091, "卡片操作请求(Card Operation Request)"},
{102011, "空中卡片操作结果通知(Air Card Operation Result)"},
{102021, "一卡通业务前置机应用停止通知(Prehost Application Stop)"},
{102031, "信息查询请求(Message Query Request)"},
{102041, "服务系统挂失通知(ServiceSystem Report Of Loss)"},
{108001, "企业客户端查询前置状态(Query PreHost Status)"}
};
strResult = "未知交易码";
foreach (var item in mCodeDescription)
{
//int iSearch = Search(item., 0, 21, 11);
if(item.Key == iCode)
{
strResult = item.Value;
}
}
return strResult;
}
我们来测试一下运行情况
代码
Using Xunit;//用的Resharp 的Xunit插件
public class Test01
{
[Fact]
public void Test()
{
Stopwatch timer = new Stopwatch();
decimal micro;
timer.Start();
string str = MCodeDesc.Get_MCODE_Desc("101021");
Console.WriteLine(str);
timer.Stop();
micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
timer = Stopwatch.StartNew();
timer.Start();
Console.WriteLine(MCodeDesc.StrCodeDescription(101021));
timer.Stop();
micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
timer = Stopwatch.StartNew();
timer.Start();
Console.WriteLine(MCodeDesc.StrCodeDescription(101025));
timer.Stop();
micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
}
}
public class Test01
{
[Fact]
public void Test()
{
Stopwatch timer = new Stopwatch();
decimal micro;
timer.Start();
string str = MCodeDesc.Get_MCODE_Desc("101021");
Console.WriteLine(str);
timer.Stop();
micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
timer = Stopwatch.StartNew();
timer.Start();
Console.WriteLine(MCodeDesc.StrCodeDescription(101021));
timer.Stop();
micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
timer = Stopwatch.StartNew();
timer.Start();
Console.WriteLine(MCodeDesc.StrCodeDescription(101025));
timer.Stop();
micro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Execution time was {0:F1} microseconds.", micro);
}
}
测试结果:
Test01.Test : Passed
业务前置机挂失通知(Prehost Report Of Loss)
Execution time was 3075.8 microseconds.
业务前置机挂失通知(Prehost Report Of Loss)
Execution time was 3645.3 microseconds.
未知交易码
Execution time was 4.6 microseconds.
Execution time was 3075.8 microseconds.
业务前置机挂失通知(Prehost Report Of Loss)
Execution time was 3645.3 microseconds.
未知交易码
Execution time was 4.6 microseconds.
还能优化吗?
StrCodeDescription
/// <summary>
///
/// </summary>
/// <param name="iCode">传入业务代码</param>
/// <returns>返回业务描述</returns>
public static string StrCodeDescription(int iCode)
{
string strResult;
Dictionary<int, String> mCodeDescription= new Dictionary<int, string>
{
{101000, "链路检测(Network Management)"},
{101001, "业务前置机签到交易(Sign On)"},
{101002, "业务前置机签退交易(Sign Off)"},
{101010, "订购关系查询(Order Relationship Query)"},
{101011, "发卡请求(空中、写卡器)(Create Sub Application Request)"},
{101012, "卡片操作结果通知(写卡器)(Terminal Card Operation Result)"},
{101021, "业务前置机挂失通知(Prehost Report Of Loss)"},
{101022, "解挂通知(Cancel Report Of Loss)"},
{101031, "注销请求(空中、写卡器)(Cancellation Request)"},
{101032, "废卡请求(Annul Card Request)"},
{101041, "个人化信息更新请求(空中)(Update Sub_Application)"},
{101051, "恢复企业初始主控密钥(Reload Keys)"},
{101061, "信息服务通知(Message Send)"},
{101062, "信息状态查询(Message Status Query)"},
{101071, "子应用状态查询(Sub_Application status Query)"},
{101081, "机具状态数据上报(Terminal Status)"},
{101091, "卡片操作请求(Card Operation Request)"},
{102011, "空中卡片操作结果通知(Air Card Operation Result)"},
{102021, "一卡通业务前置机应用停止通知(Prehost Application Stop)"},
{102031, "信息查询请求(Message Query Request)"},
{102041, "服务系统挂失通知(ServiceSystem Report Of Loss)"},
{108001, "企业客户端查询前置状态(Query PreHost Status)"}
};
//就在这里优化吧
if (!mCodeDescription.TryGetValue(iCode, out strResult))
{
strResult = "未知交易码";
}
return strResult;
}
再看看运行结果
业务前置机挂失通知(Prehost Report Of Loss)
Execution time was 3313.1 microseconds.
业务前置机挂失通知(Prehost Report Of Loss)
Execution time was 2776.1 microseconds.
未知交易码
Execution time was 4.2 microseconds.
