[英]C# ignores null check?
什么是club
,它是否可能有一个不是空安全的 static ==
运算符重载? 例如,以下情况是可能的并且是错误的:
bool == (Foo x, Foo y) => x.Id == y.Id;
它被破坏了,因为它不认为x
和/或y
可能是null
。 使用club == null
将调用此损坏的运算符,从而导致 NRE。
A good way to check is to use club is object
instead of club != null
, as the is object
/ is null
syntax never calls static ==
operator overloads.
也许您应该像这样将club
与null
进行比较:
if (!(club is null) && club.Id > 0)
我认为 NullReferenceException 是由==
运算符引起的,它可以使用非“空安全”的方法。
为确保参考为 null,您可以使用:
ReferenceEquals(myObject, null)
它是 Object class 本身的 static 方法,因此基本上可以在任何地方使用。
大多数情况下,它会给你相同的结果:
myObject == null
但是由于“==”可以被重载,你可能会有奇怪的行为。 请参阅运算符重载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.