zoukankan      html  css  js  c++  java
  • 使用 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.");
    }
    

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

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

    对于同一个值,把它与其它多个值进行比较判断,可以用 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 的新姿势,也期待你的分享。

  • 相关阅读:
    POJ Area of Simple Polygons 扫描线
    POJ2828 Buy Tickets 线段树
    cf578c Weakness and Poorness 三分
    poj3737 UmBasketella 真正的三分
    POJ1061 青蛙的约会 exgcd
    POJ3090 Visible Lattice Points 欧拉函数
    P2860 [USACO06JAN]冗余路径Redundant Paths
    [JSOI2008]球形空间产生器
    [APIO2010]特别行动队
    [ZJOI2007]仓库建设
  • 原文地址:https://www.cnblogs.com/willick/p/13935023.html
Copyright © 2011-2022 走看看