相关疑难解决方法(0)

在C#中,为什么数组上的Equals()方法只比较它们的引用,而不是它们的实际内容

C#,为什么Equals()方法总是arrays通过比较引用而不是通过比较内容来检查两者之间的相等?

因此,调用Equals()其实现的所有方法(很多)都不能像数组那样工作(它不会比较内容):

示例:

int[] array1 = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] array2 = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};

var u = array1.Equals(array1);                                       //true
var v = array1.Equals(array2);                                       //false
var w = Array.Equals(array1, array2);                                //false
var x = (new List<int[]>(new int[][] { array1 })).Contains(array2);  //false
var y = (new int[][] { array1 }).Any(x => x == array2);              //false
var z = (new …
Run Code Online (Sandbox Code Playgroud)

c# arrays equality reference

9
推荐指数
1
解决办法
7084
查看次数

两个包含相同元素的数组可以不相等吗?

今天我遇到了一个惊人的问题,我试图找到一个对象是否包含在List集合中.问题是列表找不到对象,并且当我可以在那里看到它时将index返回-1.然后我创建了一个自定义索引查找器,通过比较属性而不是直接相等来查找对象,我发现对象的一个​​属性,一个相同的ushort数组在比较时返回false,但它们包含完全相同的元素.

数组如下:

{ushort [1]} [0] 13

它们两者完全相同,只是其中一个对象包含在List中,而另一个对象在它自己的上面.可能是造成这个问题的原因是什么?我已经尝试了所有类型的不同方法来解决问题,但我不能弄清楚问题是什么.在这种特殊情况下,导致两个数组之间的比较返回false的原因是,我使用Object.equals和普通==比较器一样使用.谢谢

c# arrays list c#-4.0

1
推荐指数
1
解决办法
748
查看次数

标签 统计

arrays ×2

c# ×2

c#-4.0 ×1

equality ×1

list ×1

reference ×1