繁体   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