Arraylist在从磁盘加载后无法比较对象

Mil*_*lan 3 c# arraylist

为了简单起见,我可以说我有一个arraylist allBooks包含类"书籍"和一个arraylist someBooks包含一些但不是所有"书籍"的书.

当我想看一个arraylist中的一本书是否也包含在另一个arraylist中时,使用contains()方法工作正常.

问题是,当我将两个Arraylists保存到.bin文件并在程序重新启动后加载它们时,这不再起作用了.执行与以前相同的测试,即使比较的对象相同(内部具有相同的信息),contains()也返回false.

我通过重载equals方法解决了它,它工作正常,但我想知道为什么会发生这种情况?

lep*_*pie 6

您必须提供自己的哈希码并等于实现.默认情况下,它会简单地使用指针相等,被"克隆"对象后,这显然失败(串行/解串周期).