gpt4 book ai didi

c# - 空条件结果类型,我错过了什么吗?

转载 作者:行者123 更新时间:2023-11-30 21:53:48 25 4
gpt4 key购买 nike

如果 (Station?.SeparateJob) 被标记,我不明白为什么。

Resharper 对 if (Station?.SeparateJob == true) 很满意,通常它会标记 == true。

我认为在这种情况下 null 应该评估为 false,但有人告诉我我不能像这样将 nullable 转换为 bool。

最佳答案

C# 不允许将 null 强制转换为 false,也不允许将可空类型强制转换为其不可空类型。

Station?.SeparateJob 的计算结果为 bool?。 (必须这样做,因为如果 Stationnull,则结果为 null。)不能对 执行 if 语句bool?,并且 bool? 无法隐式转换为 bool,因此编译器会发出错误。

但是,声明 Station?.SeparateJob == true 是允许的,因为可以为 null 的类型可以比较它们的非 null 类型。如果左侧为 true,此比较返回 true,如果左侧为 false,则返回 false >空。比较的结果是一个真正的 bool(不可为 null),因此 if 语句编译。

Resharper 将标记您将 booltrue 进行比较的情况(因为这是不必要的),但不会标记您比较 bool? 为真(因为它是必需的)。

关于c# - 空条件结果类型,我错过了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642186/

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