簡體   English   中英

這種使用ReferenceEquals的方式正確嗎

[英]Is this way of using ReferenceEquals correct

我正在做一些代碼審查,並停止了以下結構。 這是使用ReferenceEquals來檢查某個方法返回的實際上是否與作為參數傳遞的對象或新參數相同的對象的正確方法嗎?

int x = 5;
Foo f = new Foo()

Foo DoSomething(Foo f)
{
    if(x > 5)
    {
         return f;
    }
    else
    {
        return new Foo();
    }
}

Foo ff = DoSomething(f);

if(Object.ReferenceEquals(ff, f))
{
    //do something
}

是,對於引用類型。 值類型在傳遞給方法之前先進行裝箱,這有點復雜。

比較值類型時。 如果objA和objB是值類型,則將它們裝箱,然后將它們傳遞給ReferenceEquals方法。 這意味着,如果objA和objB都代表值類型的相同實例,則ReferenceEquals方法仍然返回false,

在此處閱讀更多詳細信息

值類型的引用相等

ReferenceEquals方法-MSDN

與Equals方法和equals運算符不同,ReferenceEquals方法不能被覆蓋。 因此,如果您要測試兩個對象引用是否相等並且不確定Equals方法的實現,則可以調用ReferenceEquals方法。 但是,請注意,如果objA和objB是值類型,則在將它們傳遞給ReferenceEquals方法之前將它們裝箱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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