问题标签 [iequalitycomparer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 在 Objective-C 中检查相等性
如何检查字典中的键是否与方法参数中的字符串相同?即在下面的代码中,dictobj 是 NSMutableDictionary 的对象,对于 dictobj 中的每个键,我需要与字符串进行比较。如何做到这一点?我应该键入 NSString 的键吗?
c# - 比较两个列表在 C# 中
我有一堂课叫
此类继承 IEquatable 并实现等于我需要的方式。(意思是:当我在代码中单独比较两个 MyClass 类型对象时,它可以工作)
然后我创建两个列表:
当我去比较 ListA 和 ListB 时,我应该是真的吗?
c# - linq 除了和自定义 IEqualityComparer
我正在尝试在两个字符串列表上实现自定义比较器,并使用 .Except() linq 方法来获取那些不是列表之一的比较器。我做一个自定义比较器的原因是因为我需要做一个“模糊”比较,即一个列表上的一个字符串可以嵌入到另一个列表上的一个字符串中。
我做了以下比较器
当我调试时,唯一命中的断点是在 GetHashCode() 方法中。Equals() 永远不会被触及。有任何想法吗?
c# - 加入 + IEqualityComparer和哈希码
我正在编写自己的 LINQ 参考,但在一些更复杂的运算符实现方面遇到了麻烦。
有一个 Join 实现需要一个 IEqualityComparer 我快疯了。
在我写之前我试图先理解它(显然)
想象这两个列表:
这里没有什么奇怪的。我想通过 Initial 加入这两个列表,例如:
初始=A 字=蚂蚁
初始=A 字=弧
初始=B 字=船
...
我需要一个比较器,我写了这个:
加入本身:
这是我第一次使用 HashCodes,经过一段良好的调试后,我看到每个单词都进入比较器并查看它的 HashCode,如果另一个单词具有相同的 HashCode,它就调用 equals。
因为我只想比较最初的我虽然我只需要第一个字母哈希(我错了吗?)
问题是这不能正常工作。它说“Ant”和“Arc”是相等的,好吧,它比较同一个列表中的每个单词,但它只添加它找到的最后一个单词,在这种情况下Arc,忽略Ant和Ant等于“A “ 也...
如果我输入“Ant”和“Ant”,它会同时添加。
简而言之,这样做的方法是什么?我知道我做错了什么。
谢谢你。
c# - List.Contains 没有按预期工作
如果我有一个类型的对象MyBull
和一个List<MyBull> orig
:
那为什么这是假的呢?
iequalitycomparer - NameValueCollection 实际上并没有对它的 IEqualityComparer 做任何事情?
我正在查看,System.Collections.Specialized.NameValueCollection
它需要一个IEqualityComparer
,如果像我这样的人想按照键的字母顺序对集合中的项目进行排序,这是个好消息。
但是,仔细观察Reflector
,我没有看到NVC
该类实际上使用了IEqualityComparer
任何地方。我的观察正确吗?IEqualityComparer
如在,除了以某些基本顺序重新排列其组成项目外,我看不到可枚举实体中的 an 有任何用处。而且我没有看到NVC
看起来可能想要做那种事情的方法(Sort
, Arrange
, OrderBy
, Aggregate
, 等等)。
linq - 具有许多属性的类的 IEqualityComparer 既没有唯一值
IEqualityComparer
这个类如何实现?
ID 属性不是唯一的。这两个属性都没有唯一值。
该实体有 7 个属性。
c# - IEqualityComparer 和奇怪的结果
看看这个类:
我还有一个 Vector 类,它只是两个点和一些其他属性。我不想在我的向量中有相等的点,所以我想出了这个方法:
这个单元测试应该给我一个例外:
当我使用相同的点时,即 mPoint1,就像在代码中一样,抛出异常。当我使用 mPoint2 时,即使它们的名称和坐标相同,也不会引发异常。我检查了它们的哈希码,它们实际上是不同的。根据我在 GetHashCode 中创建的代码,我认为这两点将具有相同的哈希码。
有人可以向我解释为什么这不能像我坚持的那样工作吗?我不确定我是否解释得很好,但是..感谢您的帮助:D
乔治
linq - 传递一个 lambda 表达式来代替 IComparer 或 IEqualityComparer 或任何单一方法接口?
我碰巧看到了一些代码,其中这个人将 lambda 表达式传递给 ArrayList.Sort(IComparer here) 或 IEnumerable.SequenceEqual(IEnumerable list, IEqualityComparer here),其中需要 IComparer 或 IEqualityComparer。
我不确定我是否看到了它,或者我只是在做梦。而且我似乎无法在这些集合中找到任何接受 Func<> 或方法签名中的委托的扩展。
有这样的重载/扩展方法吗?或者,如果没有,是否有可能像这样乱七八糟地传递一个算法(读取委托),其中需要一个单方法接口?
更新 谢谢大家。我也那么认为。我一定是在做梦。我知道如何编写转换。我只是不确定我是否看到过类似的东西,或者只是认为我看到过。
另一个更新 看,在这里,我发现了一个这样的例子。毕竟我不是在做梦。看看这家伙在这里做什么。是什么赋予了?
这是另一个更新:
好的,我明白了。这家伙正在使用Comparison<T>
超载。好的。很好,但很容易误导你。不过不错。谢谢。
c# - 从集合中删除重复的 byte[]s
这可能是一个非常简单的问题。我只是想从集合中删除重复的 byte[]s。
由于默认行为是比较引用,因此我认为创建 IEqualityComparer 会起作用,但事实并非如此。
我尝试过使用 HashSet 和 LINQ 的 Distinct()。
示例代码:
输出: