检查两个值是否指向数组

时间:2016-12-17 17:45:31

标签: c#

请在下面的代码中,我如何检查num和num2是否指向myArray中的相同引用,如果是,则跳到j的下一个实例。

我尝试了(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];
        }
    }
}

4 个答案:

答案 0 :(得分:2)

由于变量num是值类型而不是引用,因此它存储在stack, not on the heap的内存中,因此是代码中唯一使用相同内存的变量(在堆栈中)确定num的具体方法的框架确实是num num。没有其他变量指向那个记忆 实际上,没有其他变量 可以 指向同一个内存。即使你创造了一个盒装的#34;基于num的引用变量,num的盒装版本指向同一内存(堆栈中的 ){{1} },它将指向num的副本,在装箱发生时在代码执行时在上创建。

其他链接
Stack and Heap
Stack and Heap

答案 1 :(得分:0)

正如Steve所说;你需要解释你认为的参考。如果你想继续,如果声明是真的;您只需使用continue;功能。

答案 2 :(得分:0)

要检查引用相等性,您需要使用Object.ReferenceEquals方法。简单的相等运算符(==)也可以工作,但只有在不重写相等的情况下才能在引用类型之间。

在您的情况下,您只能检查两个数组之间的引用,但不能检查内部值。您的数组包含值类型的整数值。

答案 3 :(得分:-3)

如果我= = j那么它们是相同的&#39;参考&#39;。

更清楚:

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