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

问题描述 投票:-2回答:1

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

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

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

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

c# null nullable c#-7.0
1个回答
10
投票

是的,您可以使用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值表示没有对象。值得在您的脑海中仔细区分对象和引用。

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

© www.soinside.com 2019 - 2024. All rights reserved.