几个Linq.Enumerable函数需要一个IEqualityComparer<T>.是否有一个方便的包装类适应delegate(T,T)=>bool实现IEqualityComparer<T>?编写一个很容易(如果你忽略了定义正确的哈希码的问题),但我想知道是否有开箱即用的解决方案.
具体来说,我想对Dictionarys 进行集合操作,仅使用Keys来定义成员资格(同时根据不同的规则保留值).
我正在阅读测试驱动开发:通过示例.所有示例都使用Java和Junit(我在第10章).有一种测试方法可以测试两个对象的相等性.我已经覆盖了类的等于但是在运行我的测试时它失败了.
这是示例代码
public class BaseX
{
public string Test { get; set; }
public override bool Equals(object obj)
{
return this.Test == ((BaseX)obj).Test;
}
public override string ToString()
{
return string.Format("Tyep: {0}, Test: {1}", this.GetType().Name, this.Test);
}
}
public class A : BaseX
{
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试代码
[Fact]
public void FunTest2()
{
var b1 = new BaseX();
var a1 = new A();
b1.Test = "a";
a1.Test = "a";
Assert.Equal(a1, b1);
}
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,它将失败并显示此消息.
TDD1.UnitTest.UnitTest1.FunTest2 : Assert.Equal() Failure
Expected: Tyep: A, …Run Code Online (Sandbox Code Playgroud)