gpt4 book ai didi

c# - 是否有理由先转换为一个类型然后再转换为可空类型?

转载 作者:太空狗 更新时间:2023-10-29 22:33:20 25 4
gpt4 key购买 nike

所以我刚刚看到了这行代码:

Item = (int?)(int)row["Item"];

有什么理由不能只是:

Item = (int?)row["Item"];

最佳答案

参见 Boxing Nullable Types (C#) ;可以将对象直接转换为可为空的 int(但如果对象实际上不是 int,则会导致 InvalidCastException)。这两个转换会做的一件事是对 null 执行隐式检查,而直接转换为 int? 不会。

当转换为 int 然后转换为可为 null 的 int 时,如果对象变量的值为 null,将抛出 ICE。当直接转换为可为空的 int 时,null 处理得很好,但如果代码随后尝试检索 Value 属性而不检查是否确实存在,则会抛出 InvalidOperationException。

这看起来像是“快速失败”的半途而废的尝试,我不推荐它作为“好代码”。只需直接转换为 nullable,然后测试 HasValue 属性并从那里开始。

关于c# - 是否有理由先转换为一个类型然后再转换为可空类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846404/

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