gpt4 book ai didi

C# 三元运算符在不应该评估的时候进行评估

转载 作者:太空狗 更新时间:2023-10-29 23:36:52 25 4
gpt4 key购买 nike

<分区>

这段代码今天让我大吃一惊:

clientFile.ReviewMonth == null ? null : MonthNames.AllValues[clientFile.ReviewMonth.Value]

clientFile.Review 月是一个字节?在失败的情况下,它的值为空。预期的结果类型是字符串。

异常在这段代码中

    public static implicit operator string(LookupCode<T> code)
{
if (code != null) return code.Description;

throw new InvalidOperationException();
}

评估的右侧正在评估,然后隐式转换为字符串。

但我的问题是,为什么在显然只应评估左侧时却评估右侧?(文档指出“仅计算两个表达式之一。”)

顺便说一下,解决方案是将 null 转换为字符串 - 这可行,但 Resharper 告诉我转换是多余的(我同意)

编辑:这与“为什么我需要在编译前添加强制转换”类型的三元运算符问题不同。这里的要点是不需要转换就可以编译 - 只是为了使其正常工作。

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