请在下面的代码中,我如何检查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];
}
}
}
答案 0 :(得分:2)
由于变量num
是值类型而不是引用,因此它存储在stack, not on the heap的内存中,因此是代码中唯一使用相同内存的变量(在堆栈中)确定num
的具体方法的框架确实是num
和 仅 num
。没有其他变量指向那个记忆
实际上,没有其他变量 可以 指向同一个内存。即使你创造了一个盒装的#34;基于num
的引用变量,num
的盒装版本不指向同一内存(堆栈中的 ){{1} },它将指向num
的副本,在装箱发生时在代码执行时在堆上创建。
答案 1 :(得分:0)
正如Steve所说;你需要解释你认为的参考。如果你想继续,如果声明是真的;您只需使用continue;
功能。
答案 2 :(得分:0)
要检查引用相等性,您需要使用Object.ReferenceEquals方法。简单的相等运算符(==)也可以工作,但只有在不重写相等的情况下才能在引用类型之间。
在您的情况下,您只能检查两个数组之间的引用,但不能检查内部值。您的数组包含值类型的整数值。
答案 3 :(得分:-3)
如果我= = j那么它们是相同的&#39;参考&#39;。
更清楚:
如果i == j则myArray [i]和myArray [j]引用相同的元素。