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

C# how to check for null. (value is null) or (null == value). Can we use `is` operator instead of == operator

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

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

对象除了为null之外还可以为空吗?

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

事实上,在 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 进行所有空值检查 如果 您没有执行奇数自定义比较的类型。可以写一个 class 这样 x == nullx is null 会给出不同的结果,但这几乎总是一个设计(或实现)问题。

没有对象是 "empty" 的概念 - 实际上它不是 object null。现在暂且不考虑可空值类型,它是一个空的 reference,而不是一个对象——空值表示没有对象。在您的脑海中仔细区分对象和引用是值得的。

一些特定的对象类型具有 "empty" 的概念——例如,一个字符串可以是空的,或者是一个集合——但这些类型有特定的方法来测试是否为空。没有一般对象是空的概念。