从 “x is null 和 x == null” 的区别看 C# 7 模式匹配中常量和 null 的匹配

本文探讨C# 7中模式匹配的`x is null`与`x == null`的区别,揭示它们在编译后的MSIL代码中不同表现,特别是在常量匹配和引用类型比较时的差异。建议在比较常量时使用`is`以避免潜在错误和性能影响。
摘要由CSDN通过智能技术生成

尝试过写 if (x is null)?它与 if (x == null) 相比,孰优孰劣呢?

x is null 还有 x is constant 是 C# 7.0 中引入的模式匹配(Pattern Matching)中的一个小细节。阅读本文将了解 x is constantx == constant 之间的差别,并给出一些代码编写建议。



C# 7 的模式匹配

说到 C# 中新增的模式匹配,想必大家一定不会忘了变量的匹配。以下例子来自于微软官方 C# 7.0 的介绍文档 What’s New in C# 7 - C# Guide - Microsoft Docs

public static int DiceSum2(IEnumerable<object> values)
{
    var sum = 0;
    foreach(var item in values)
    {
        if (item is int val)
            sum += val;
        else if (item is IEnumerable<object> subList)
            sum += DiceSum2(subList);
    }
    return sum;
}
public static int DiceSum3(IEnumerable<object> values)
{
    var sum = 0;
    foreach (var item in values)
    {
        switch (item)
        {
            case int val:
                sum += val;
                break;
            case IEnumerable<object> subList:
                sum += DiceSum3(subList);
                break;
        }
    }
    return sum;
}

其实,官方文档中也顺带提及了常量的匹配:

public static int DiceSum5(IEnumerable<object&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值