让我有一个模板类(class Entry<T>
),我想让这个类继承自两个接口(IComparable<T>
和IEquatable<T>
),我试过这个:
class Entry<T> where T : IComparable<T>, IEquatable<T>
{
/* Whatever in the class */
}
我已经尝试了下一个代码:
class Entry<T> : IEquatable<T>, where T : IComparable<T>
{
/* Whatever in the class */
}
但是他们没有正常工作,我不知道为什么,任何人都可以帮助我知道如何使用多个接口继承?
答案 0 :(得分:2)
使用以下签名来实施IEquatable<T>
和IComparable<T>
:
public class Entry<T> : IComparable<T>, IEquatable<T>
{
public int CompareTo(T other)
{
//compare logic...
}
public bool Equals(T other)
{
return CompareTo(other) == 0;
}
}
您的第一个示例是使用where
子句形成泛型类型约束,该约束表示“仅接受实现IComparable<T>
和IEquatable<T>
的类型参数”
您的第二个示例语法无效。看起来您正试图说“T
IEquatable<T>
需要实现IComparable<T>
”。如果您想这样做,那么您还必须在T
中约束class Entry<T>
。