关于重构之Switch的处理【二】
前面寫了一個Switch的處理的例子,
public class Fun{
public?void IFNumberid(int flag)
{
? ?switch (flag)
????? ?????????? {
??????????????????? case 1:
??????????????????????? Console.WriteLine("優秀");
??????????????????????? break;
??????????????????? case 2:
??????????????????????? Console.WriteLine("良好");
??????????????????????? break;
??????????????????? case 3:
??????????????????????? Console.WriteLine("一般");
??????????????????????? break;
??????????????????? case 4:
??????????????????????? Console.WriteLine("不及格");
??????????????????????? break;
? default:
??????????????????????? Console.WriteLine("");
??????????????????????? break;
??????????????? }
}
??? 以上Case里面是一個有序的數字,處理方法見 switch中case如果是有序的話,如何處理
那么假如我們換成了以下的事例呢?
?
public class Fun{
public?void NameResult(String flag)
{
? ?switch (flag)
????? ?????????? {
??????????????????? case "a":
??????????????????????? Console.WriteLine("優秀");
??????????????????????? break;
??????????????????? case "張三":
??????????????????????? Console.WriteLine("良好");
??????????????????????? break;
??????????????????? case "c":
??????????????????????? Console.WriteLine("一般");
??????????????????????? break;
??????????????????? case "g":
??????????????????????? Console.WriteLine("不及格");
??????????????????????? break;
? default:
??????????????????????? Console.WriteLine("");
??????????????????????? break;
??????????????? }
}
這里的Case并不是一個有序的,那么我們利用數組索引的辦法將并不可行,此時,則可以考慮使用Dictionary<Tkey, Tvalue>來實現Switch中Case的替換
?
public class Fun{
public?void NameResult(String flag)
{
Dictionary<string, string> cl = new Dictionary<string, string>();
? cl.Add("a","不及格");
? cl.Add("張三","良好");
? cl.Add("c","一般");
cl.Add("g","不及格");
foreach (KeyValuePair<string, string> a in cl)
????????? ?? {
if(a.key==flag)
{
? Console.WriteLine(a.Value);
return ;??????????????????????? ????????
}
??????????? }
Console.WriteLine("");
}
}
另外,很多時候,我們可能根據某個值直接去執行某個方法,這時,采用以上方法也是可行的,
先聲明一個委托
private delegate void EatDelegate();
private? void functionOne(){
Console.WriteLine("優秀");
??????????????????????? }
Dictionary<string, EatDelegate> cl = new Dictionary<string, EatDelegate>();
cl.Add("a",functionOne);
? foreach (KeyValuePair<string, string> a in cl)
????????? ?? {
if(a.key==flag)
{
? a.Value();
return;??? ????????
}
??????????? } ?
?
轉載于:https://www.cnblogs.com/wangyong969/archive/2011/01/06/1926940.html
總結
以上是生活随笔為你收集整理的关于重构之Switch的处理【二】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: easyui combox使用
- 下一篇: Jquery实现简单图片切换