gpt4 book ai didi

c# - 具有空合并的琐碎算术如何表现

转载 作者:行者123 更新时间:2023-12-03 21:14:54 24 4
gpt4 key购买 nike

我有一个方法

int? Foo(int? a, int? b)
{
return a ?? 0 + b ?? 0;
}

我很惊讶 Foo(12, 4) 的结果是 12,虽然我期待 16。

我知道空合并从可空性中净化了类型。所以,我想,也许可空类型与结构不相加。但表达 (int?) 12 + (int) 4预期返回 16。

看起来只有带有合并的表达式才表现得不明显: (int?) 12 ?? 0 + (int) 4给 12。

为什么上面的每个例子都没有返回 16?

最佳答案

你应该使用括号,否则计算不正确:

int? Foo(int? a, int? b)
{
return (a ?? 0) + (b ?? 0);
}

您的版本计算如下:
int? Foo(int? a, int? b)
{
return a ?? ((0 + b ) ?? 0);
}

关于c# - 具有空合并的琐碎算术如何表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61481803/

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