这对我来说似乎是一个错误......
我接受这样定义的自动属性:
public decimal? Total { get; set; }
首次访问时将为空。它们还没有被初始化,所以它们当然是空的。
但是,即使在通过 += 设置它们的值之后,这个小数呢?仍然为空。所以之后:
Total += 8;
总计仍为空。这怎么可能是正确的?我知道它正在执行(null + 8),但似乎很奇怪它没有发现这意味着它应该设置为 8...
附录:
我在我的问题中提出了“null + 8”点 - 但请注意它适用于字符串。因此,它执行 null + "hello" 就好了,并返回 "hello"。因此,在幕后,它是将字符串初始化为值为“hello”的字符串对象。其他类型 IMO 的行为应该相同。可能是因为字符串可以接受 null 作为值,但 null 字符串仍然不是初始化对象,对吗?
也许这只是因为字符串不是可空的......