[英]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.