多个继承frome多个接口

时间:2013-05-11 23:44:57

标签: c# multiple-inheritance

让我有一个模板类(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 */
}

但是他们没有正常工作,我不知道为什么,任何人都可以帮助我知道如何使用多个接口继承?

1 个答案:

答案 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>