C# 常量模式
2023-01-14 22:19 作者:SunnieShine | 我要投稿
1、语法
常量模式针对于一个可能为 null
的数据类型的实例,判断是否等于某个具体的常量。
is
后紧跟一个数值,这表示将 object
那么,为什么非得是 int
呢?因为这里的 3 这个字面量,默认是 int
类型的,因此这里在等价代码里用的是 int
作为类型的判断。
2、可空值类型的常量模式匹配是不必要的
另外,我们也可以对一个可空值类型使用这样的常量模式判断。
i is int p && p == 3 && j is int q && q == 3
这里,i
就算是 null
,也不会影响判断 i == 3
的结果。大不了结果为 false
就是了。
3、double.NaN
的特殊处理
假设我们用 is double.NaN
对一个对象进行数值匹配:
d == double.NaN
吗?虽然好像没啥毛病,但是大家也都知道,double
类型的等号比较是严格的,因此很多时候比较起来都不一定相等。因此,C# 的 API 有一个 double.IsNaN
方法在专门对这个情况进行判断。而此时的 d is double.NaN
就刚好是在调用此方法。也就是说,这个 if
d == double.NaN