在 Visual Studio 2008 (C#) 中工作...我使用 List 集合来存储我的自定义类 (Shift) 的实例。
我想使用 Remove 方法从列表中删除某个班次。
但是 List.Remove() 总是删除它找到的第一个项目。
我已经为我的Shift实现了IComparable接口,我认为这样就足够了,然后我添加了一个IEqualityComparer的实现,它仍然没有效果。
这是我的实现的摘录:
地区 IComparable 成员
public int CompareTo(object obj) { Shift s1 = this; Shift s2 = (Shift)obj; if (s1.start.time != s2.start.time) return s1.start.CompareTo(s2.start); else return s1.end.CompareTo(s2.end); }
端区
地区 IEqualityComparer 成员
public bool Equals(Shift x, Shift y) { if ((x.opening) != (y.opening)) return false; if ((x.closing) != (y.closing)) return false; if (!x.opening) if (x._start != y._start) return false; if (!x.closing) if (x._end != y._end) return false; if (x.when != y.when) return false; if (x.day != y.day) return false; if (x.EmployeeID != y.EmployeeID) return false; return true; } public int GetHashCode(Shift obj) { return obj.ToString().ToLower().GetHashCode(); }
端区
然而,仍然 - 当列表包含两个班次时,说“8:00 - 15:00”;"12:00 - 16:00",调用 Remove("12:00-16:00") 会导致 "8:00 - 15:00" 被删除,而后一个仍保留在集合中!
这里有什么问题?谢谢