在深入的 C# 中,Jon Skeet 使用IEquatable<>
重写重载操作Equals()
。
public sealed class Pair<T1, T2> : IEquatable<Pair<T1, T2>>
{
public bool Equals(Pair<T1, T2> other)
{
//...
}
}
他说我们这样做“是为了提供一个强类型的 API,以避免不必要的执行时检查”。
避免了哪些执行时间检查?更重要的是,实现一个接口是如何实现强类型API的呢?
在这本书的上下文中,我可能遗漏了一些东西。我认为接口通过多态性给了我们代码重用。我也明白它们有利于编程到抽象而不是具体类型。这就是我所知道的。