gpt4 book ai didi

C# object is not null but (myObject != null) 仍然返回 false

转载 作者:IT王子 更新时间:2023-10-29 04:51:55 26 4
gpt4 key购买 nike

我需要在对象和 NULL 之间进行比较。当对象不为 NULL 时,我用一些数据填充它。

代码如下:

 if (region != null)
{
....
}

这是有效的,但是当循环和循环时,有时区域对象不是空的(我可以在 Debug模式下看到它里面的数据)。在逐步调试时,它不会进入 IF 语句...当我使用以下表达式进行快速观察时:我看到 (region == null) 返回 false,AND (region != null ) 也返回 false...为什么以及如何?

更新

有人指出对象被 == 和 != 重载了:

    public static bool operator ==(Region r1, Region r2)
{
if (object.ReferenceEquals(r1, null))
{
return false;
}
if (object.ReferenceEquals(r2, null))
{
return false;
}

return (r1.Cmr.CompareTo(r2.Cmr) == 0 && r1.Id == r2.Id);
}


public static bool operator !=(Region r1, Region r2)
{
if (object.ReferenceEquals(r1, null))
{
return false;
}
if (object.ReferenceEquals(r2, null))
{
return false;
}
return (r1.Cmr.CompareTo(r2.Cmr) != 0 || r1.Id != r2.Id);
}

最佳答案

是否为区域对象的类重载了 == 和/或 != 运算符?

现在您已经发布了重载代码:

重载可能如下所示(代码取自 Jon SkeetPhilip Rieck 发布的帖子):

public static bool operator ==(Region r1, Region r2)
{
if (object.ReferenceEquals( r1, r2)) {
// handles if both are null as well as object identity
return true;
}

if ((object)r1 == null || (object)r2 == null)
{
return false;
}

return (r1.Cmr.CompareTo(r2.Cmr) == 0 && r1.Id == r2.Id);
}

public static bool operator !=(Region r1, Region r2)
{
return !(r1 == r2);
}

关于C# object is not null but (myObject != null) 仍然返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com