gpt4 book ai didi

c# - 什么是提升运算符?

转载 作者:IT王子 更新时间:2023-10-29 03:46:52 27 4
gpt4 key购买 nike

我在看 this article并且正在努力遵循解释提升运算符的 VB.NET 示例。似乎没有等效的 C# 示例或教程。一般来说,我在运算符重载方面没有太多经验,因此在阅读可空类型的同时尝试接受 VB.NET 等效项可能不是最好的起点...

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

关于 SO 提升运算符的信息似乎不多,所以希望这也能帮助其他人。

最佳答案

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

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

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

请参阅 C# spec 的第 6.4.2 节(提升转换运算符)和第 7.3.7 节(提升运算符)获取更多信息。

关于c# - 什么是提升运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3370110/

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