我得到了一行无法编译的代码,红色下划线:
但是,如果我使用model.Building.Address.Equals(null),则没有问题:
实际的错误消息是:
而Address是一个定义如下的常规属性:
问题:为什么检查(model.Building.Address == null)无法编译???
答案 0 :(得分:8)
与null
的比较可能不起作用的原因是model.Building.Address
是不可为空的值类型,即struct
。此类值类型不能为null
,因此编译器会发出错误。
比较model.Building.Address.Equals(null)
将编译,但它完全没有比较,因为它总是返回false
。
使其发挥作用的两种方法是将Address
中使用的类型从struct
更改为class
,或通过附加问号Address
使?
成为可空的在其类型名称之后。
答案 1 :(得分:1)
如果model.Building.Address == null
没有编译,那么确定' sa结构(我的意思是Address
是非可空类型而实际上是struct