簡體   English   中英

C# 忽略 null 檢查?

[英]C# ignores null check?

誰能向我解釋一下 blazor-server 中 C# 邏輯的這種非理性的蹩腳之美?

在此處輸入圖像描述

什么是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.

也許您應該像這樣將clubnull進行比較:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM