gpt4 book ai didi

c# - 为什么这两个表达式在语义上不等价?

转载 作者:行者123 更新时间:2023-11-30 18:58:31 25 4
gpt4 key购买 nike

为什么第一个测试会引发编译器错误而第二个测试不会?对我来说,它们在语义上似乎是等价的。

public bool? inlineTest(bool input)
{
return input ? null : input;
}

public bool? expandedTest(bool input)
{
if (input)
return input;
else
return null;
}

最佳答案

条件运算符要求两个操作数的类型相同。 nullbool不兼容,并且没有从 bool 进行的自动转换至 null .您需要明确转换:

return input ? (bool?)input : null;

另一方面,有一个从bool的自动转换至 bool?还有来自 nullbool? ,这就是为什么你可以返回一个 boolnull来自bool?方法。

关于c# - 为什么这两个表达式在语义上不等价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36885819/

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