我们在编写程序的时候经常用到条件判断,不是IF就Switch。有时候一个判断多就会觉得麻烦和看起来不舒服。最近在搞一个项目,就是这样太多的判断,个人觉得不是爽。于是就另辟新径尝试一下,我们就以一个简单的星期判断来讲解一下吧。首先如果用IF进行判断。。
代码语言:javascript复制public static string GetChineseWeek(string Week)
{
string ret="星期六";
if(Week.IndexOf("Sunday") >= 0) ret="星期日";
if(Week.IndexOf("Monday") >= 0) ret="星期一";
if(Week.IndexOf("Tuesday") >= 0) ret="星期二";
if(Week.IndexOf("Wednesday") >= 0) ret="星期三";
if(Week.IndexOf("Tuesday") >= 0) ret="星期四";
if(Week.IndexOf("Friday") >= 0) ret="星期五";
return ret ;
}
好,这个就是if当然你可以说elseif更为容易理解,但我个人不喜欢elseif咯。。好吧我们上switch
代码语言:javascript复制public static string GetChineseWeek(string Week)
{
string string.Format("星期{1}", "六");
switch (Week){
case "Sunday":
ret=string.Format("星期{1}", "日");
break;
case "Monday":
ret = string.Format("星期{1}", "一");
break;
case "Tuesday":
ret= string.Format("星期{1}", "二");
break;
case "Wednesday":
ret = string.Format("星期{1}", "三");
break;
case "Thursday":
ret = string.Format("星期{1}", "四");
break;
case "Friday":
ret = string.Format("星期{1}", "五");
break;
}
return ret;
}
这个就是switch直观一点点吧,但忘记一个括号就麻烦了。好接下来就是我们的秘技。。
代码语言:javascript复制 private static Dictionary<string, Func<string>> GetChineseWeek= new Dictionary<string, Func<string>>
{
{"Sunday", ()=>{ return "星期日";} },
{"Monday", ()=>{ return "星期一";} },
{"Tuesday", ()=>{ return "星期二";} },
{"Wednesday", ()=>{ return "星期三";} },
{"Thursday", ()=>{ return "星期四";} },
{"Friday", ()=>{ return "星期五";} },
{"Saturday", ()=>{ return "星期六";} }
};
对,我们就用了之前讲的Dictionary,想不到Dictionary还可以这样用,不过要注意的就是调用方法需要:
代码语言:javascript复制GetChineseWeek[DateTime.Now.DayOfWeek.ToString()]()
这样就可以了。。当然你说那个更优更好,这个就看选择了,最后一个比较优雅一点,而IF和SWITCH则用的比较广和烂,基本会编程的看一下都知道和了解。
最后,再上一个JS那边优雅的
代码语言:javascript复制const day = "tuesday";
let dayValue = 0;
const values = {
monday:0,
tuesday: 1,
wednesday:2
thursday: 3,
friday: 4,
saturday: 5
sunday: 6
};
dayValue = values [day] ?? -1; //??空值合并操作符
console.log(dayValue);
上面的是js的方式,感觉比C#优雅一点。不过算,暂时这样了,新的一年新开启新的片章。。