簡體   English   中英

檢查兩個值是否指向數組中的相同引用

[英]Check if two values pointing to the same reference in an array

請在下面的代碼中,我如何檢查num和num2是否指向myArray中的相同引用,如果是,則跳至j的下一個實例。

我嘗試過if (myArray[i] == myArray[j]) ,但是如果數組中的另一個項目具有相同的值,它將返回true。 謝謝!

for (int i = 0; i < myArray.Length; i++)
{
    int num = myArray[i];
    for (int j = 0; j < myArray.Length; j++)
    {
        int num2;
        if (myArray[i] == myArray[j])
        {

        }
        else
        {
            num2 = myArray[j];
        }
    }
}

由於變量num是值類型,而不是引用,因此它存儲在堆棧的內存中,而不是堆中 ,因此是代碼中唯一使用相同內存的變量(在特定方法的堆棧幀中,確實聲明了num ),實際上是num並且只有 num 沒有其他變量指向該內存。
實際上,沒有其他變量可以指向相同的內存。 即使你創建一個基於“盒裝”引用變量num ,是盒裝版本num 指向相同的內存( 在棧上 ),其中num是,它會指向副本num ,在上堆上創建裝箱發生時的代碼執行點。

其他連結
堆放
堆放

正如史蒂夫所說; 您需要解釋您認為參考的內容。 如果您只想在語句為真的情況下繼續; 您可以簡單地使用continue; 功能。

為了檢查引用是否相等,您需要使用Object.ReferenceEquals方法。 簡單的等號運算符(==)也可以工作,但是僅在引用類型之間,如果不覆蓋相等性,則可以使用。

在您的情況下,您只能檢查兩個數組之間的引用,而不能檢查內部值。 您的數組包含作為值類型的整數值。

如果i == j,則它們是相同的“參考”。

更清楚地說:

如果i == j,則myArray [i]和myArray [j]引用相同的元素。

暫無
暫無

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

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