【发布时间】:2020-02-11 15:39:56
【问题描述】:
我有两个类列表 lin
public class lin
{
public string DB_Name;
public string Object_Name;
}
List<lin> lines1 = new List<lin>();
List<lin> lines2 = new List<lin>();
我已经为这两个列表分配了一些值
下面是列表 lines1 的输出,位于即时窗口的索引 5,其中包含 DB_Name = "aesdb_s1" 和 Object_Name = "tblAsiAliasItem"
lines1[5]
DB_Name: "aesdb_s1"
Object_Name: "tblAsiAliasItem"
索引 0(零)处的 lines2 也具有相同的值
lines2[0]
DB_Name: "aesdb_s1"
Object_Name: "tblAsiAliasItem"
但是当我比较这两个对象或尝试获取值索引时,它返回 false
lines1.IndexOf(lines2[0])
-1
lines1.Contains(lines2[0]);
false
lines1[5]==lines2[0]
false
以上是visual studio的即时窗口输出
【问题讨论】:
-
您是如何比较这些列表的?请也发布该代码
-
如何将对象添加到列表中?
-
我已经发布了即时窗口的输出,您可以在我的问题中看到
-
它不会通过
==来复制它们。你应该覆盖equals -
默认情况下,类提供基于引用的相等性。我假设您的对象是语义等价的,但是是不同的对象实例。这还不够:它们会报告不同。