using System;
public class C {
public void M() {
decimal? value = null;
Console.WriteLine(value < 0); // returns false
Console.WriteLine(value is < 0); // returns false
}
}
变成:
public class C
{
public void M()
{
Nullable<decimal> num = null;
Nullable<decimal> num2 = num;
Console.WriteLine((num2.GetValueOrDefault() < default(decimal)) & num2.HasValue);
Console.WriteLine(num.HasValue && num.GetValueOrDefault() < 0m);
}
}
2条答案
按热度按时间gcuhipw91#
在这个上下文中,
is
操作符是模式匹配的一部分,这意味着它将检查运行时类型,然后执行<
操作符。<
将简单地进行值比较。对于这类问题,一个好的应用程序是sharplab.io,它将显示代码的反编译版本,其中语法糖将显示为更简单的C#代码。
变成:
https://sharplab.io/#v2:D4AQTAjAsAUCDMACciDCiDetE+UkALIgLIAUAlJtrjQCYCmAxgJYC2AhgDYD8iAblwCu9RAF5EAO0GdOAbmo0cICAE5SAzsMQAeRAAZysxAHpjyAOwBnRADMul+gsXK1Grc2u6DR0xet3OBycAX1hgoA
8dtrkrch2#
is
操作符用于检查对象的运行时类型是否与给定的类型兼容,因此这是一种类型比较。常规值比较-比较相同类型的对象的值。
这是两种不同的含义和用法。