为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我可以将枚举与null进行比较?

为什么我可以将枚举与null进行比较?

C#
蓝山帝景 2021-04-30 14:23:32
根据Microsoft的文档,通过将值类型标记为可为空,我可以将它们与null进行比较。在嵌套对象中使用空传播时,这特别有用。但是,当比较我认为是值类型的特定枚举时,我仍然可以与null进行比较,如下所示:public class NullColorComparer{    public bool CompareNullWithColor()    {        // This return false.        return null == Color.Red;    }}public enum Color{    Red,    Blue}为什么这样做?编译是否应该因类型错误而失败?
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

null比较的一面被视为a Nullable<Program.Color>,它将进行编译,因为您可以将aNullable<WhatEver>与a进行比较WhatEver

但是,它将发出警告:

警告CS0472表达式的结果始终为'false',因为类型'Program.Color'的值从不等于类型'Program.Color?'的'null'。


查看完整回答
反对 回复 2021-05-16
?
www说

TA贡献1775条经验 获得超8个赞

C#编译器不会阻止比较。但是您会得到一个警告:“表达式的结果始终为'false',因为'Color'类型的值永远不会等于'Color'类型的'null'。” 它可以让您进行比较,但表示总是错误的。对于任何值类型都是如此。您甚至可以将Int32值与null进行比较,您将获得相同的结果。无需编译时错误”


查看完整回答
反对 回复 2021-05-16
  • 3 回答
  • 0 关注
  • 252 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信