'is <constantpattern>' 和 '== constant' 之间的区别

Difference between 'is <constantpattern>' and '== constant'

C# 7.0引入了模式匹配,其中一种模式是constant pattern.

所以现在可以写:

int? i = 0
if (i is null) {..}

甚至

if (i is 0) {..}

这与 == 平等相比如何?

哪个运算符用于比较值?

int? i = 0;
if (i is null) {}
if (i is 0) {}

翻译成:

int? num = 0;
if (!num.HasValue) {}
if (object.Equals(0, num)) {}

sharplab.io