C# 语言一贯秉承简洁优美的宗旨,每次升级都会带来一些语法糖,让我们可以使代码变得更简洁。本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例。

使用属性模式代替 IsNullOrEmpty

在任何你使用 IsNullOrEmpty 的时候,可以考虑这样替换:

string? hello = "hello world";
hello = null; // 旧的方式
if (!string.IsNullOrEmpty(hello))
{
Console.WriteLine($"{hello} has {hello.Length} letters.");
} // 新的方式
if (hello is { Length: >0 })
{
Console.WriteLine($"{hello} has {hello.Length} letters.");
}

属性模式相当灵活,你还可以把它用在数组上,对数组进行各种判断。比如判断可空字符串数组中的字符串元素是否为空或空白:

string?[]? greetings = new string[2];
greetings[0] = "Hello world";
greetings = null; // 旧的方式
if (greetings != null && !string.IsNullOrEmpty(greetings[0]))
{
Console.WriteLine($"{greetings[0]} has {greetings[0].Length} letters.");
} // 新的方式
if (greetings?[0] is {Length: > 0} hi)
{
Console.WriteLine($"{hi} has {hi.Length} letters.");
}

刚开始你可能会觉得阅读体验不太好,但用多了看多了,这种简洁的方法更有利于阅读。

使用逻辑模式简化多重判断

对于同一个值,把它与其它多个值进行比较判断,可以用 orand 逻辑模式简化,示例:

ConsoleKeyInfo userInput = Console.ReadKey();

// 旧的方式
if (userInput.KeyChar == 'Y' || userInput.KeyChar == 'y')
{
Console.WriteLine("Do something.");
} // 新的方式
if (userInput.KeyChar is 'Y' or 'y')
{
Console.WriteLine("Do something.");
}

之前很多人不解 C# 9.0 为什么要引入 orand 逻辑关键字,通过这个示例就一目了然了。

后面还会继续分享一些 C# 9.0 的新姿势,也期待你的分享。

最新文章

  1. webpack入门教程之初识loader(二)
  2. 如何更方便地调试javascript代码
  3. template 不能分别在.h和.cpp中定义模板
  4. oracle 几个不常用的关键字
  5. express教程
  6. Linux内核启动logo
  7. Eclipse中使用Working Set来管理项目
  8. Linux命令echo -e
  9. 关于自定义的NavigationBar
  10. eclipse中tomcat使用add and remove无法发布web项目
  11. TCP/IP协议原理与应用笔记26:网际协议(IP)之 分片(Fragmentation)
  12. Spreadsheet Tracking
  13. 关于Hadoop集群的搭建环境变量相关配置
  14. Identity-第二章
  15. 红豆带你从零学C#系列之——初识C#
  16. 使用hadoop ecipse插件须要注意的问题
  17. Markdown使用教程
  18. C:宏定义的一些格式(怕忘记)
  19. 听翁恺老师mooc笔记(2)-第一个程序--&运算符
  20. Yii2设计模式——静态工厂模式

热门文章

  1. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
  2. Java知识系统回顾整理01基础05控制流程06break
  3. 【比赛记录】8.21 div2
  4. 实时,异步网页使用jTable, SignalR和ASP。NET MVC
  5. 磁盘 IOPS(每秒读写次数) 的计算方法
  6. Windows 10 系统 - business editions 和 consumer editions 的区别
  7. Go语言中的常见的几个坑
  8. hugo不蒜子统计数量
  9. spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)
  10. MySQL字段添加注释,但不改变字段的类型