我正在使用 List.Contains 来判断变量是否在列表中,但它会不断返回它不在的时候。
我查阅了MSDN,发现我必须继承 IEquatable 并实现我自己的 .Equals 方法。实际的类是从另一个类继承的,所以我在基类中编写了 .Equals 方法。
这是“Actividad”类的代码:
abstract public class Actividad:IEquatable<Actividad> {
protected int codigo;
[...]
public bool Equals(Actividad otra)
{
return this.Codigo == otra.Codigo;
}
}
这是子类“Actividad_a”的定义:
public class Actividad_a : Actividad{ [...] }
这是检查列表中是否有内容的代码:
private void loadDisponibles() {
foreach (Actividad_a act in Program.Asignaturas) {
if (!user1.ActAcademicas.Contains(act)) {
doSomething();
}
}
}
Program.Asignaturas
并且user1.ActAcademicas
都定义为List<Actividad_a>
。
问题是!user1.ActAcademicas.Contains(act)
无论数据是否在列表中,它总是返回 true。
我的第一个猜测是我必须从 IEquatable 继承并在每个派生类中实现 .Equals 方法,但我不太确定。