什么是解除操作员?

我正在看这篇文章,并正在努力遵循说明解除运营商的VB.NET的例子。 似乎没有一个等效的C#示例或教程。 我一般都没有太多的操作符重载的经验,所以试图与VB.NET相当,而读取可空types可能不是最好的开始…

任何人都可以提供解除操作符的解释,以及它们是如何被可空types使用的? 这是否意味着可以为null的types本身并不重载运算符,并且将使用它所表示的基础types的运算符?

关于解除运营商似乎没有太多的信息,所以希望这可以帮助其他人。

谢谢

提升的操作员是通过“提升”已经存在于不可空的表格上的操作员来操作可空types的操作员。 例如,如果你这样做:

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

该“+”运算符被解除。 它实际上并不存在于Nullable<int>但是C#编译器的行为就像它一样,生成代码来做正确的事情。 (对于大多数情况,这是检查两个操作数是否为null的问题;如果是,则结果为null;否则,将两个操作数解包为非空值,使用正常运算符,然后将结果包装回虽然可以为空值,但还是有一些比较特殊的情况。)

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