我如何确定 List.Contains 适用于数据表列表

本文关键字:适用于 数据表 列表 Contains List 何确定 | 更新日期: 2023-09-27 18:36:26

如果我有这个:

 List<DataTable> listDataTables = functionToAddSomeDataTables();

我想做一个这样的比较:

if(listDataTables.Contains(aDataTable))
{
   //do something.
}

我怎么知道它是在比较引用、架构、内容还是上述所有内容?

我是否需要编写自己的 IEquatable.Equals 以确保它正常工作,或者我可以信任内置的 .数据表的平等工作如我所希望的那样?

是否有一般规则或观察来了解何时.包含,或类似的比较是通过参考还是按值?

提前致谢:)

我如何确定 List.Contains 适用于数据表列表

>List<T>.Contains使用对象的object.Equals(object)方法。由于DataTable的文档说它的Equals是从Object.Equals继承而来的,所以引用比较的默认Object.Equals实现是将使用的。如果要通过其他内容进行比较,请使用 LINQ 的 Contains 方法包括该相等比较器。

(例如,比较 DataTable 方法和十进制方法:只有Decimal列表Equals在左侧的列表中,并显示"(覆盖 ValueType.Equals(Object).)"而不是"(继承自 Object。

您必须编写自己的 Equals 方法并比较所需的属性。内置(默认)Contains() 方法将检查值类型的值(字符串、int...)和引用类型的引用(您的类是引用类型)