!(x is null)
和x is object
之间有区别吗?
是否存在它们会返回不同结果的情况?
没有明显的区别。它们都编译为相同的CIL。
在这里自己检查
注意 :即使对于可为空的类型也是如此,
如下所示来自标准 ECMA-334 C# 语言规范
12.11.11 is 运算符
is 运算符用于检查对象的运行时类型是否为 与给定类型兼容。检查在运行时执行。这 运算的结果 E 为 T,其中 E 是表达式,T 是 动态以外的类型,是一个布尔值,指示 E 是否为 非空,可以通过引用成功转换为类型 T 转换、装箱转换、拆箱转换、包装 转换,或展开转换。
更新
完全简洁,正如阿列克谢·列文科夫所指出的那样
!(1 is null)
vs.1 is object
显示一些差异,前者由于不可为空而无法编译