我正在研究接口的类型,但我不明白如何使用IEquatable接口。我认为它比直接使用a.Equals(b)提供了更好的性能,因为我们避免了装箱.我做过这件事class Test<T> where T:IEquatable<T> public static bool IsEqual(T a, T b) { return a.Equals(b)Test.IsEqual(x, y));
下面的代码显示我可以重写object.Equals,也可以实现IEquatable<>。实际上,下面的代码实现了两者,测试表明两者都被调用。public class TextValuePair : IEquatable<TextValuePair> public string Text { get; set; }
public
因为当涉及泛型类型时,重写object.Equals()的性能会很差,所以我看到了很多IEquatable<>的用法。问题是,使用IEquatable<>会极大地使代码变得丑陋,这就混合了业务逻辑和重写Equeals()和GetHashCode()方法的技术部分。我们的结构越大,覆盖的方法就越多。public class Box : IEquatable<Box> { public List<Box> Boxes