【发布时间】:2011-08-15 14:36:39
【问题描述】:
为什么有List<T>.Contains(T) 方法而没有List<T>.Find(T) 方法?仅支持支持谓词的Finds。如果我们有一个现有的 T 实例填充了它的 ID 的属性值(但缺少其他属性),为什么我们不能通过提供这个对象实例来搜索 List,尤其是当我们实现自定义 IEquatable<T> 时为T 并想使用那里的东西。但事实上,我们不能,我们必须在 Find(predicate) 调用中重复我们在 IEquatable 实现中所做的一切。
【问题讨论】:
-
当您已经拥有该实例时,
Find(T)方法的用途是什么?这相当于Contains(T)方法,因为Find(T)唯一会告诉您的是该列表是否包含该实例。 -
我想是因为他试图获取对列表中对象的引用......只是因为他有一个“等于”另一个对象,特别是考虑到他实现了 IEquatable 并且它不仅仅是一个引用比较,这并不意味着他得到了他想要的对象的引用。
-
正如反理智所说的那样
标签: c# list icollection iequatable