前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟if和switch说再见

跟if和switch说再见

原创
作者头像
谭广健
发布2023-01-09 14:29:18
2820
发布2023-01-09 14:29:18
举报
文章被收录于专栏:谭广健的专栏

我们在编写程序的时候经常用到条件判断,不是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#优雅一点。不过算,暂时这样了,新的一年新开启新的片章。。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档