小编典典

什么是吊运商?

c#

我一直在看这篇文章,并努力遵循VB.NET示例,该示例解释了提升操作员的情况。似乎没有等效的C#示例或教程。我一般没有太多的运算符重载经验,因此尝试在了解可空类型的同时使用VB.NET等效项可能不是最佳的开始…

谁能提供提升操作符的解释以及可为空的类型如何使用它们?这是否仅表示可空类型本身不会重载运算符,而是会使用其表示的基础类型中的运算符?

SO方面似乎没有太多有关解除运营商的信息,因此希望这也可以帮助其他人。


阅读 302

收藏
2020-05-19

共1个答案

小编典典

提升运算符是通过“提升”非空形式已经存在的运算符来处理可空类型的运算符。因此,例如,如果您这样做:

int? x = 10;
int? y = 10;
int? z = x + y;

该“
+”运算符被取消。它实际上并不存在,Nullable<int>但是C#编译器的行为就像它一样,生成代码以执行正确的操作。(在大多数情况下,这是检查两个操作数是否为null的问题;如果是,则结果为null。否则,将两个操作数都包装为它们的不可为null的值,使用normal运算符,然后将结果包装回a可为空的值。不过,在比较中有一些特殊情况。)

有关更多信息,请参见C#规范的
6.4.2(提升的转换运算符)和7.3.7(提升的运算符)。

2020-05-19