C#如何检查null。 (value为null)或(null == value)。我们可以使用`is`运算符而不是==运算符[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何检查null。 (value为null)或(null == value)。我们可以使用`is`运算符而不是==运算符[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

C#如何检查null(value is null)(null == value)。我们可以使用is运算符而不是==运算符吗?

C#7.0支持使用is运算符的const模式。所以我们可以使用is null进行所有空值检查?

除了null之外,对象是否也可以为空?

答案

是的,您可以使用is运算符和null的常量模式来检查引用(或可空值类型值)是否为空。

实际上,在C#7中我会说使用is null是测试空值的最惯用的方法,因为它不使用任何用户定义的运算符。考虑一下:

string x = GetStringFromSomewhere();

if (x == null) { }  // Option 1
if (x is null) { }  // Option 2

这里,选项1将调用==中定义的string运算符重载。虽然这应该做你想要的(我希望JIT编译器会非常重视它),但是你并不想特别想要这样做 - 你只想测试x的值是否为空引用。这正是选项2所做的。

所以是的,如果你没有执行奇怪自定义比较的类型,你可以使用is null进行所有空值检查。编写一个类可能会使x == nullx is null得到不同的结果,但这几乎总是一个设计(或实现)问题。

没有一个对象是“空”的概念 - 事实上它并不是空的对象。暂时不考虑可以为空的值类型,它是一个null的引用,而不是一个对象 - null值表示没有对象。值得在您的脑海中仔细区分对象和引用。

一些特定的对象类型具有“空”的概念 - 例如,字符串可以是空的,或者是集合 - 但是这些类型具有测试空虚的特定方式。对象没有一般概念是空的。

以上是关于C#如何检查null。 (value为null)或(null == value)。我们可以使用`is`运算符而不是==运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何检查空值。 (值为空)或(空 == 值)。我们可以使用`is`运算符而不是==运算符[重复]

检查 Integer 在 groovy 中是 Null 还是数字?

如何使用 C API 检查 SQLite 列中的值是不是为 NULL?

如何在 Typescript 中检查 null 和 undefined 并保存类型信息?

我们如何检查指针是不是为 NULL 指针?

如何实际检查 null 以符合 Dart 中的 Sound null-safety [重复]