利用C#9.0新语法如何提升if语句美感
作者:精致码农 • 王亮 发布时间:2021-06-15 12:48:54
标签:c#9.0,if,语句
前言
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.");
}
刚开始你可能会觉得阅读体验不太好,但用多了看多了,这种简洁的方法更有利于阅读。
使用逻辑模式简化多重判断
对于同一个值,把它与其它多个值进行比较判断,可以用 or 、and 逻辑模式简化,示例:
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 为什么要引入 or 、and 逻辑关键字,通过这个示例就一目了然了。
后面还会继续分享一些 C# 9.0 的新姿势,也期待你的分享。
来源:https://www.cnblogs.com/willick/p/13935023.html
0
投稿
猜你喜欢
- 前言MVC模式是目前主流项目的标准开发模式,这种模式下框架的分层结构清晰,主要分为Controller,Service,Dao。分层的结构下
- 废话不多说了,给大家贴关键代码了,具体代码如下所示:import java.io.File;import java.io.FileOutpu
- 会话会话:用户打开浏览器进行的一系列操作直至关闭浏览器的过程看作是一次会话HTTP协议是无状态的,不能实现跟踪对话。比如进入一个网站,每次操
- 1、对称二叉树【OJ链接】分为以下几种情况:二叉树为空,是对称二叉树二叉树不为空,其左子树或者右子树为空,不是对称二叉树二叉树不为空,左右子
- 主要从以下几方面来介绍一下@Scope注解@Scope注解是什么@Scope注解怎么使用@Scope注解的使用场景1,@Scope注解是什么
- 1. 引入依赖pom文件引入activemq依赖<!--activeMq配置--> &
- CyclicBarrier是什么CyclicBarrier是Java并发包中提供的一种同步工具类,它可以让多个线程在某个屏障处等待,直到所有
- 前言在做项目的时候,如果项目是前后分离的,后端一定要和前端或者是移动端对接接口,那么问题来了,接口是不是要自己写给他们看,一般的会采用Exc
- 在C程序代码中我们可以利用操作系统提供的互斥锁来实现同步块的互斥访问及线程的阻塞及唤醒等工作。然而在Java中除了提供LockAPI外还在语
- 方式一:基于现有控件进行扩展,如基于button进行扩展,UI可直接用xmal进行编辑设计,逻辑用xaml.cs进行编辑方法二:直接创建wp
- Java Set集合的遍历及实现类的比较Java中Set集合是一个不包含重复元素的Collection,首先我们先看看遍历方法package
- @Bean修饰的方法参数的注入方法参数默认注入方式为Autowired,即先根据类型匹配,若有多个在根据名称进行匹配。1:复杂类型可以通过@
- Java绘图中,显示文字的方法主要有三种:(1)drawString(String str,int x,int y):在指定的位置显示字符串
- 添加群机器人可以查看这篇文章:添加机器人到钉钉群 使用命令行工具curl快速验证自定义机器人是否可以正常工作。可以使用如下命令,把对应的链接
- 算法简介迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学迪家迪杰斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶
- 1.使用keySet进行遍历实现步骤:(1)使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中(
- 首先引入pom <!--SpringBoot 2.1.0--> <parent>  
- 1.首先什么是JNI呢?JNI——(Java Native Interface),他是java平台的特性,不是安卓系统提供的。他定义了一些J
- 1.easy-captcha工具包生成验证码的方式有许多种,这里选择的是easy-captcha工具包。github开原地址为:easy-c
- 在 Spring 容器中,两个 Bean 之间除了通过 <ref> 建立依赖关系外,还存在着一些特殊关系。1 继承在