我在2个不同的对象中拥有完全相同的图像。它们是bmp,当我将它们与.Equals
进行比较时,它返回false。
是否有理由这样做,如果是这样,应该如何比较图像?
答案 0 :(得分:6)
如果它们是两个不同的Image
个对象,则单独加载它们会有不同的引用。
Image
从.Equals
继承Object
,而不是覆盖它(请参阅MSDN上的Image
)。
由于.Equals
确实引用了相等性,因此如果引用是针对不同的Image
对象,则它将返回false。
要查看图像是否相同,您必须逐个像素/逐个字节地比较它们。
答案 1 :(得分:0)
答案 2 :(得分:0)
.Equals()
检查它们是否是对同一对象的引用。如果你想比较它们,你必须手动完成,比较所有像素的大小或颜色。
答案 3 :(得分:0)
默认情况下.Equals(object)comapres 引用相等。这意味着即使你加载相同的图像两次,它们是不同的实例的简单事实意味着它们将是不相等的。
答案 4 :(得分:0)
你称之为等于方法是比较引用的地址(也就是指针),因为你的对象可能被加载到两个不同的内存位置,结果是假的。
您应该编写自己的方法来比较更高级别的结构,例如,首先比较高度和宽度,如果它们相同则比较像素,可能Image类可以帮助您,但Equals可以从对象类所以不会帮助你。
答案 5 :(得分:0)
.Equals通常比较对象实例。您需要比较对象“content”。