久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

C# 對(duì)象不為 null 但 (myObject != null) 仍然返回 fals

C# object is not null but (myObject != null) still return false(C# 對(duì)象不為 null 但 (myObject != null) 仍然返回 false)
本文介紹了C# 對(duì)象不為 null 但 (myObject != null) 仍然返回 false的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我需要在對(duì)象和 NULL 之間進(jìn)行比較.當(dāng)對(duì)象不是 NULL 時(shí),我用一些數(shù)據(jù)填充它.

I need to do a comparaison between an object and NULL. When the object is not NULL I fill it with some data.

代碼如下:

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

這是有效的,但有時(shí)在循環(huán)和循環(huán)時(shí),區(qū)域?qū)ο蟛粸榭?我可以在調(diào)試模式下看到其中的數(shù)據(jù)).在調(diào)試時(shí)的逐步調(diào)試中,它不會(huì)進(jìn)入 IF 語(yǔ)句......當(dāng)我使用以下表達(dá)式進(jìn)行快速觀察時(shí):我看到 (region == null) 返回 false, AND (region != null) 也返回 false...為什么以及如何?

This is working but when looping and looping sometime the region object is NOT null (I can see data inside it in debug mode). In step-by-step when debugging, it doesn't go inside the IF statement... When I do a Quick Watch with these following expression : I see the (region == null) return false, AND (region != null) return false too... why and how?

更新

有人指出對(duì)象是 == 和 != 重載:

Someone point out that the object was == and != overloaded:

    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);
    }

推薦答案

== 和/或 != 運(yùn)算符是否為區(qū)域?qū)ο蟮念愔剌d?

Is the == and/or != operator overloaded for the region object's class?

既然您已經(jīng)發(fā)布了重載的代碼:

Now that you've posted the code for the overloads:

重載應(yīng)該如下所示(代碼取自 Jon Skeet 和 菲利普·里克):

The overloads should probably look like the following (code taken from postings made by Jon Skeet and Philip 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);
}

這篇關(guān)于C# 對(duì)象不為 null 但 (myObject != null) 仍然返回 false的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Why shouldn#39;t I always use nullable types in C#(為什么我不應(yīng)該總是在 C# 中使用可空類型)
C# HasValue vs !=null(C# HasValue vs !=null)
C# ADO.NET: nulls and DbNull -- is there more efficient syntax?(C# ADO.NET:空值和 DbNull —— 有沒(méi)有更高效的語(yǔ)法?)
How to set null value to int in c#?(如何在c#中將空值設(shè)置為int?)
How to handle nulls in LINQ when using Min or Max?(使用 Min 或 Max 時(shí)如何處理 LINQ 中的空值?)
Method call if not null in C#(在 C# 中如果不為 null 的方法調(diào)用)
主站蜘蛛池模板: 久久激情网 | 三级在线观看视频 | 国产日韩视频 | 国产精品成人国产乱一区 | 免费久久 | 国产一级片免费 | 九九在线视频 | 黄色免费在线观看视频 | 国产一区中文字幕 | 国产乱码一区二区 | 久久午夜影院 | 亚洲精品自拍视频 | 成人免费黄色大片 | www.久久久久| 91动漫在线观看 | 国产美女一区二区三区 | 日韩精品网站 | 色综合一区二区 | 一区二区三区在线观看免费 | 欧美精品日韩 | 99久久婷婷国产综合精品草原 | 日本视频www | 在线午夜视频 | 激情综合婷婷 | 99国产精品99久久久久久粉嫩 | 精品久久久久久久久久久久久 | 一道本在线 | 91一级片 | 欧美日韩成人一区二区三区 | 日日干干 | 午夜精品视频在线 | 大香伊人网 | 国产成人免费视频 | 日韩欧美国产精品 | www.粉色视频在线观看 | 毛片一区| 久久av网| 国产免费黄色 | 久草综合网| 欧美日韩久久 | 国产a久久麻豆入口 |