【发布时间】:2022-12-09 17:13:42
【问题描述】:
我想知道,在使用可空值类型时,在 C# 中进行常规值比较或对 is-operator 进行值比较之间在技术上是否存在任何区别。
给定以下示例:
decimal? value = null;
value < 0; // returns false
value is < 0; // returns false
考虑到它都返回 false,我只是想知道这两个比较是否有任何技术差异。
【问题讨论】:
我想知道,在使用可空值类型时,在 C# 中进行常规值比较或对 is-operator 进行值比较之间在技术上是否存在任何区别。
给定以下示例:
decimal? value = null;
value < 0; // returns false
value is < 0; // returns false
考虑到它都返回 false,我只是想知道这两个比较是否有任何技术差异。
【问题讨论】:
is 运算符用于检查对象的运行时类型是否与给定类型兼容。所以这是一种类型比较。
常规值比较 - 比较相同类型对象的值。
这是两种不同的含义和用法。
【讨论】:
value 是否属于int 类型,因为 0 隐含地是 int 并因此返回 false,或者它实际上在这里返回 false,因为值实际上不小于 0?