两者之间有区别吗!(x 为空),x 为对象



!(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显示一些差异,前者由于不可为空而无法编译

相关内容

  • 没有找到相关文章

最新更新