使用 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 的新姿势,也期待你的分享。
使用 C# 9.0 新语法提升 if 语句美感的更多相关文章
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- 第十六节:语法总结(3)(C#6.0和C#7.0新语法)
一. C# 6.0 新语法 1. 自动属性初始化可以赋值 /// <summary> /// 自动属性初始化 /// </summary> public class UserI ...
- c# 7.0 6.0 新语法
1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...
- Visual Studio 2019 preview中体验C# 8.0新语法
准备工作: Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能,但目前也有一些可以试用了.在开始之前,需要进行入两项设置: 将Framework设置为.ne ...
- C#6.0新语法
.自动属性初始化的改进(有用) 原来的用法(声明时无法同时初始化),例如: class MyClass { public int Age { get; set; } public string Nam ...
- 感受C#6.0新语法
作为一门专为程(yu)序(fa)员(tang)考虑的语言,感受一下来自微软的满满的恶意... 1. 字符串内联在之前的版本中,常用的格式化字符串: var s = String.Format(&quo ...
- C#7.0新语法
一.out输出参数 在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如: 先定义一个方法,方法参数是out类型的输出参数: private void DoNoting(out int ...
- c# 7.0新语法特性
public class NewAtturibute { public void TestFunc() { // 01 Out变量 不用初始化 "; if (int.TryParse(inp ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
随机推荐
- 13.深入k8s:Pod 水平自动扩缩HPA及其源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 Pod 水平自动扩缩 Pod 水平自动扩缩工作原理 Pod 水平自动 ...
- 头文件.h的作用
参考链接http://www.cnblogs.com/webcyz/archive/2012/09/16/2688035.html懒得复制过来
- VSCode搭建golang环境
安装对应版本的Golang 略 VSCode安装对应 Go 插件 在应用商店安装即可:go VSCode安装 Go 工具: 在VSCode输入:Crtl + Shift + P 在弹出框输入:inst ...
- Python基础笔记2-ruamel.yaml读写yaml文件
上一篇笔记记录了Python中的pyyaml库对yaml文件进行读写,但了解到ruamel.yaml也能对yaml文件进行读写,于是想尝试一下它的用法. 一,注意 这里首先要更正一下网上大部分博客的说 ...
- bootStrap小结2
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- python接口测试之excel的操作
1 用到的第三方库openpyxl,需要在命令窗口中下载安装pip install openpyxl,主要对xlsx格式的excel进行读取和编辑: xlrd库从excel中读取数据,支持xlsx x ...
- BOOST库 消息队列
直接贴实验代码: /******* boost 消息队列 **********/ #if 1 #include <boost/thread/thread.hpp> #include < ...
- 第二十四章 IPtables防火墙
一.iptables防火墙基本概述 1.应用场景 1.主机安全2.端口转发/ip转发3.内部共享上网 2.iptables工作流程 1.配置防火墙规则可以添加在下面,也可以添加在前面,是有顺序的2.匹 ...
- Linux文件的查找之find命令处理动作
查找到文件之后的处理动作 例如:找出来系统中比较大超过10G的并且存放时间超过一年的log文件并删除 find / -name ".log" -size +10G -mtime + ...
- Flutter Webview添加Cookie的正确姿势
场景 h5页面要从cookie里面取数据,所以需要在flutter webview的cookie里面塞一些数据,设置的数据多达十几条:按照网上查的使用方式来设置,通过fiddler抓包发现,只能生效一 ...