小编Cus*_*nes的帖子

如何强制HashSet重新成员?

在这种情况下,一个成员被编辑为与另一个成员相等,强制HashSet重新计算哈希值从而清除自身重复的正确方法是什么?

我知道最好不要期望这会自动发生,所以我尝试了将HashSet与自身相交的事情,然后将其重新分配给引用自身和相同EqualityComparer的构造函数调用.我确信后者会奏效,但不会.

成功的一件事是将HashSet从其转换为其他容器类型(如List)而不是直接从其自身转换.

班级定义:

public class Test {
    public int N;
    public override string ToString() { return this.N.ToString(); }
    }
public class TestClassEquality: IEqualityComparer<Test> {
    public bool Equals(Test x, Test y) { return x.N == y.N; }
    public int GetHashCode(Test obj) { return obj.N.GetHashCode(); }
    }
Run Code Online (Sandbox Code Playgroud)

测试代码:

    TestClassEquality eq = new TestClassEquality();
    HashSet<Test> hs = new HashSet<Test>(eq);
    Test a = new Test { N = 1 }, b = new Test { N = 2 };
    hs.Add(a);
    hs.Add(b);
    b.N = …
Run Code Online (Sandbox Code Playgroud)

c# hashset iequalitycomparer

3
推荐指数
1
解决办法
227
查看次数

标签 统计

c# ×1

hashset ×1

iequalitycomparer ×1