C#开发-Null的整型数值比较

大家都知道整数类型、浮点数类型、布尔类型比较的规则。这在各个语言中都是通用的。但是有谁知道Null类型和整型比较的结果呢?

我在.NET8.0下编写了这个测试程序来解释Null和整型比较的结果。

cs 复制代码
int? count = null;
bool compare1 = count > 2;
bool compare2 = count > 0;
bool compare3 = count > -1;

Console.WriteLine($"{nameof(compare1)}: {compare1}");
Console.WriteLine($"{nameof(compare2)}: {compare2}");
Console.WriteLine($"{nameof(compare3)}: {compare3}");

bool compare4 = count < 2;
bool compare5 = count < 0;
bool compare6 = count < -1;

Console.WriteLine($"{nameof(compare4)}: {compare4}");
Console.WriteLine($"{nameof(compare5)}: {compare5}");
Console.WriteLine($"{nameof(compare6)}: {compare6}");

bool compare7 = count == 2;
bool compare8 = count == 0;
bool compare9 = count == -1;

Console.WriteLine($"{nameof(compare7)}: {compare7}");
Console.WriteLine($"{nameof(compare8)}: {compare8}");
Console.WriteLine($"{nameof(compare9)}: {compare9}");

运行结果如下所示。

bash 复制代码
compare1: False
compare2: False
compare3: False
compare4: False
compare5: False
compare6: False
compare7: False
compare8: False
compare9: False

我们可以看到null无论是跟正数比较还是跟零或负数比较,比较返回的结果总是false。

根据这样的特性我们可以用来简化检查非空的代码。

这是优化前的代码。

cs 复制代码
if (nullableList != null && nullableList.Count > num)

{
    // do something
}

这是优化后的代码。

cs 复制代码
if (nullableList?.Count > num)

{
    // do something
}

利用好跟null比较总是返回false的特性,我们可以优化项目里大量检查非空的代码。

相关推荐
QQ2740287562 小时前
Soundness Gitpod 部署教程
linux·运维·服务器·前端·chrome·web3
动感光博2 小时前
Unity序列化字段、单例模式(Singleton Pattern)
unity·单例模式·c#
冼紫菜3 小时前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos
黑洞视界4 小时前
NCC Mocha v0.2.0 发布, 新增对 Metrics 的支持
c#·.net·可观测性·observability
爱莉希雅&&&4 小时前
shell脚本之条件判断,循环控制,exit详解
linux·运维·服务器·ssh
FAREWELL000754 小时前
Unity基础学习(十五)核心系统——音效系统
学习·unity·c#·游戏引擎
wei_work@4 小时前
【linux】Web服务—搭建nginx+ssl的加密认证web服务器
linux·服务器·ssl
Sylvan Ding5 小时前
远程主机状态监控-GPU服务器状态监控-深度学习服务器状态监控
运维·服务器·深度学习·监控·远程·gpu状态
慢一点会很快5 小时前
【vscode】解决vscode无法安装远程服务器插件问题,显示正在安装
服务器·ide·vscode
zimoyin5 小时前
Java 快速转 C# 教程
java·开发语言·c#