使用 C# 9.0 新语法提升 if 语句美感

Posted DotNet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 C# 9.0 新语法提升 if 语句美感相关的知识,希望对你有一定的参考价值。

(给DotNet加星标,提升.Net技能

转自:精致码农
cnblogs.com/willick/p/13935023.html

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 的新姿势,也期待你的分享。


- EOF -


推荐阅读   点击标题可跳转

1、

2、

3、


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

好文章,我在看❤️


以上是关于使用 C# 9.0 新语法提升 if 语句美感的主要内容,如果未能解决你的问题,请参考以下文章

C# 9.0 新特性

C# 9.0 新特性

C# 9.0 中的顶级语句

C# 9.0 新特性之 Lambda 弃元参数

C# 9.0 中的新增功能

C# 9.0 新特性之模式匹配简化