范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

C中检查null的语法糖

  今天看到已经更新了devblogs,新增的C# 11的!!(用于检查null的语法)经过非常长的讨论,最后取消了。然后我又想起来null检查,这个可以说一说。 函数参数null检查#传统写法#
  写一个函数的时候,最经典的检查,估计也是大家最常使用的null检查,应该是这样的吧: public static void GetV1(string prompt) {     if (prompt is null) throw new ArgumentNullException(nameof(prompt));     Console.WriteLine(prompt); } ThrowIfNull#
  这个写起来也没啥问题,但是总觉得有点不舒适。.NET 6在 ArgumentNullException 中新增了ThrowIfNull 方法,可以写的更优雅一点。public static void GetV2(string prompt) {     ArgumentNullException.ThrowIfNull(prompt);     Console.WriteLine(prompt); }
  异常的时候,就会出现: System.ArgumentNullException: "Value cannot be null. (Parameter "prompt")" 。这个是不是简单了点?可是还是需要写一行。C# 11的!!语法(已经取消)#
  C# 11刚preview的时候,我就瞄到了这个特性,现在依然可以通过设置preview来进行启用,但是以后正式发布估计就不行了。
  它通过在参数后面叠加!!表示此参数不可为空,运行时会自动进行检查,如果是null就直接弹出错误。 public static void GetV3(string prompt!!) {     Console.WriteLine(prompt); }
  这个代码会被编译器翻译成: public static void GetV3(string prompt!!) {     if (prompt is null) {         throw new ArgumentNullException(nameof(prompt));     }     Console.WriteLine(prompt); }
  这样大家就可以专注于业务代码,不需要经常考虑异常检查了。至于为什么这个东西最后还是被删除了,可以从讨论中看到一丝端倪,首先是感觉非常纠结于这个语法,两个叹号;然后就是已经有比较多的方式可以实现检查了,这个东西是否有必要。反正最终是以后再讨论了,不过也可以看出来C#语言工作组对语言的特性讨论非常谨慎。
  他们还讨论了很多别的形式,每种都提出了各自的优缺点挺有意思的,能看出来有一点设计语言的严谨和小强迫症在,点赞~ void M(string s!!); void M(string! s); void M(string s!); void M(notnull string s); void M(string s ?? throw); void M(string s is not null); void M(checked string s); void M(string s) where s is not null; 有关null的一些操作#
  说起这个,就顺便说说c#处理null的另外几个语法糖吧。 ??#
  如果左边是的null,那么返回右边的操作数,否则就返回左边的操作数,这个在给变量赋予默认值非常好用。 int? a = null; int b = a ?? -1; Console.WriteLine(b);  // output: -1 ??=#
  当左边是null,那么就对左边的变量赋值成右边的 int? a = null; a ??= -1; Console.WriteLine(a);  // output: -1 ?.#
  当左边是null,那么不执行后面的操作,直接返回空,否则就返回实际操作的值。 using System; public class C {     public static void Main() {         string i = null;         int? length = i?.Length;         Console.WriteLine(length ?? -1); //output: -1     } } ?[]#
  索引器操作,和上面的操作类似 using System; public class C {     public static void Main() {         string[] i = null;         string result = i?[1];         Console.WriteLine(result ?? "null"); // output:null     } } 注意,如果链式使用的过程中,只要前面运算中有一个是null,那么将直接返回null结果,不会继续计算。下面两个操作会有不同的结果。
  using System; public class C { public static void Main() { string[] i = null; Console.WriteLine(i?[1]?.Substring(0).Length);  //不弹错误  Console.WriteLine((i?[1]?.Substring(0)).Length)  // System.NullReferenceException: Object reference not set to an instance of an object.  } } 一些操作#//参数给予默认值 if(x == null) x = "str"; //替换 x ??= "str";   //条件判断 string x; if(i<3)      x = y; else  {       if(z != null) x = z;      else z = "notnull"; } //替换 var x = i < 3 ? y : z ?? "notnull"   //防止对象为null的时候,依然执行代码 if(obj != null)      obj.Act(); //替换 obj?.Act();  //Dictionary取值与赋值 string result; if(dict.ContainKey(key)) {     if(dict[key] == null) result = "有结果为null";     else result = dict[key]; } else      result = "无结果为null"; //替换 var result= dict.TryGetValue(key, out var value) ? value ?? "有结果为null" : "无结果为null"; 结语#
  原来新定的C# 11提供了一个新的??,话说我个人还是挺喜欢这个特性的,不管以什么形式出现吧,期待以后再见。
  C#中为了处理null给我们准备了许多的语法糖,只能说非常简便了。有很多人会说这个可读性不好,或者觉得这是"茴字的几种写法"似的歪门邪道,我只能说,传统的语法也不是说取消了,语言有发展,只要还是比较审慎的,我觉得还是一件好事。
  文章来自https://www.cnblogs.com/podolski/p/16184027.html

一致性hash算法在很多面试的场景下,会被问到一致性hash算法。那究竟什么是一致性算法呢?一致性算法是为解决什么问题呢?这里简单做个总结。一意义随着应用的扩大和用户的增多,在单一的数据库或者red你买过最理想的电脑配件是什么?感谢邀请!买过最理想的电脑配件是什么?1移动硬盘盒遇上笔记本电脑存储空间不足时,很多人会通过删减不必要的文件资料以节省空间,这种方式治标不治本,只能缓解一时之急。如果想长久解决存储武汉地铁11号线位于洪山华容之间,未来能否延至鄂州?如果鄂州拿得出钱来修地铁,未来可以修鄂州专线,从葛店南为起点,连接华容区樊口镇,直达鄂州客运站。方便了鄂州和武汉快速直达的美好愿景!武汉地铁11号线已经延伸到了鄂州境内(葛店南)。人类的未来会走向哪里随着科技的进步,人类社会的发展,也进入了日新月异的时代。人工智能迅速走进我们的生活,无人驾驶,智能家居,离我们越来越近。无人超市,无人书店等等,智能机器人未来将在许多领域取代我们人特斯拉升级车内摄像头!开车玩手机将被警告提升自动驾驶安全性9月1日消息,特斯拉近日在北美推送并升级FSD测试版的车型中,同步升级了DMS(驾驶员监视系统)。通过车内摄像头对驾驶员进行监控和提醒,以提升开启自动辅助驾驶或FSD(完全自动驾驶十三香实锤!消息称国行iPhone13全系降价苹果本月发布iPhone13系列手机几乎是板上钉钉了,随着大部分参数已经曝光,那么定价到底如何便成了大家最为关注的点。iPhone13到底香不香,跟苹果的定价也有很大关系。近日有媒想在自己车位上安装充电桩业主犯了难近日,家住华都花园B区的杨先生准备购买一辆新能源汽车,并且想在自己的车位上安装一个充电桩,本以为顺理成章的事儿却兜兜转转成了件心事儿,究竟为什么呢?市民杨先生我想买一个新能源车,正为什么抢不到红包的总是我?群里发红包,为什么总是有人能第一个抢到?优惠券发放,为什么一秒就没了?到底是信号不好,手机不行,网速不快还是人品问题?或许你有没有想过还有其他可能?2021年7月18日,微信自主抢手机推荐预算350左右能买到啥手机?这几款手机,值了最近有网友问我,预算只有350左右可以买到啥手机呢?作者这里还真找了几款350左右的手机,而且都还不错。oppor11推荐第一款oppor11oppor11是oppo公司在2017特斯拉2。5万美元新汽车或不会命名为Model2品玩9月4日讯,马斯克在最新职工大会上透露,特斯拉售价2。5万美元的电动汽车将不会被命名为Model2。该公司之所以为大中型电动轿车取名Model3,是因为福特拥有ModelE商标3000价位段有哪些高性价比手机1realmeGT大师探索版realmeGT大师探索版兼顾性能拍照快充颜值等多方面优点,在3000元左右的机型里非常能打拍照支持光学防抖,搭载索尼IMX766主摄,拍摄效果非常不错
iPhone13要来了,什么时候买iPhone12最划算,选购方法已出在此之前,Decluttr在这份数据分析报告中强调,iPhone13公布1个月后,估算iPhone12的二手残值将跌去12,3个月后跌去20。这让许多顾客逐渐犹豫不决,这般之快的掉若预算充裕,内行人建议买手机一步到位,这四款代表最高规格进入九月份,手机圈开始了金九银十的好日子,接下来会有多款顶级旗舰发布,机友们如果预算充足的话,可以好好挑选一波了。当然,要是预算足够,那上个月的三款顶级旗舰也不可错过。图片来源于网腾讯压力山大自从防沉迷系统升级之后,各种事情接连不断的发生。先是腾讯服务器崩溃,然后就是小学生租号打游戏,现在又是王者荣耀评分见底。目前王者的评分是1。7,一般3分就要下架了,可是还是在应用商生鲜电商行业应具备怎样的产品运营策略众所周知,生鲜电商行业近两年因为疫情的原因变得非常火爆,那么生鲜电商为什么会发展这么迅速呢?我们如何做好生鲜电商行业的商品运营?生鲜电商行业应具备怎样的产品运营策略?下面小编就针对腾讯交出音乐版权后,网易云也有了动作众所周知,前段时间,国家让腾讯公司交出了音乐的独家版权。这个举动可谓是大快人心。而在最近,网易云音乐里,音乐旁边的相关的独家标识也消失了,这个举动不能说是凑热闹吧,只能说是借腾讯的中央宣传部国家新闻出版署有关负责人约谈腾讯网易等游戏企业和平台新华社北京9月8日电9月8日,中央宣传部国家新闻出版署有关负责人会同中央网信办文化和旅游部等部门,对腾讯网易等重点网络游戏企业和游戏账号租售平台游戏直播平台进行约谈。约谈指出,近段视频号功能更新支持上传1小时视频,未来将积累更多长内容9月7日消息,微信视频号于近期迎来功能更新。据悉,视频号将支持上传1小时以内视频,并上线活动主题增加功能,方便创作者根据内容选择活动主题达到作品曝光度。此前,视频号仅支持30分钟以定档了!9月15日,iPhone十三香要来了!华为也有大动作消费电子旺季来临,买手机还是买股票?时报看公司备受关注的苹果iPhone13终于要与公众见面了,定档9月15日,有意思的是,选在9月15之前,9月13日华为也将召开智慧终端办公新品发布会,据悉届时华为将发布一款14寸的大屏手机手机内存一直显示内存不足?有什么好的解决方案?一问题1打开我的手机设置2设置存储点进去看到图片视频音频文档压缩包安装包应用3拍照生活图片是否删除自己决吧!4视频就是看新闻电视剧电影不想看删除自己决定5音频就是微信聊天的语音数据官宣苹果2021秋季发布会北京时间9。15号凌晨一点开启今日凌晨Apple在微信公众号推送了一篇有消息了,找你的的文章,文中官宣了今年的秋季发布会将在北京时间9月15日凌晨1点举办,主题为加州来电。苹果官方并没有在推文中直接说明本次发布华为手机好用还是vivo或OPPO手机好用?华为手机好用还是vivo或者OPPO手机好用?这个问题看似很简单但是要真正的说那个手机好用其实不容易,单方面说某一个好用这个也是不太客观的,按目前这三个品牌的知名度和整体销量来说无