gpt4 book ai didi

c# - 可空值和定义值之间的运算符在哪里(相等、大于等)?

转载 作者:太空狗 更新时间:2023-10-30 01:03:08 26 4
gpt4 key购买 nike

如果我有这段代码(我在 Linqpad 中运行它):

decimal? x = null;
(x < 1).Dump();

可空小数和小数之间的 LessThan 运算符在哪里定义?。

不是小数吗?而且它不在十进制类中。

我基本上想创建调用运算符的 linq 表达式。

或者这段代码是由编译器即时创建的,即它使用默认的十进制运算符,然后添加一些额外的语句来检查可空值是否实际具有值?

最佳答案

这就是所谓的提升运算符,即定义在非可空类型上的运算符,编译器将其应用于相同类型的可空形式。

For the relational operators

  <  >  <=  >=

a lifted form of an operator exists if the operand types are both non-nullable value types and if the result type is bool. The lifted form is constructed by adding a single ? modifier to each operand type. The lifted operator produces the value false if one or both operands are null. Otherwise, the lifted operator unwraps the operands and applies the underlying operator to produce the bool result.

实现的细节在 C# 语言规范的 N.3.7 节中。

关于c# - 可空值和定义值之间的运算符在哪里(相等、大于等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30586125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com