2

我正在尝试制作一个通用类。有没有办法进行约束,以便只有实现的对象IComparable才能传递到我的泛型中。例如:

public class MyClass<T>
{

}

public class MyFooClass
{
}

public class MyComparableFooClass : IComparable
{
    public int Compare(MyComparableFooClass q) 
    { 
        return 0;
    }
}

public class MyMainClass()
{
    private MyClass<int> _myIntClass; // This is okay since int implements IComparable
    private MyClass<MyComparableFooClass> _myComparableFooClass // This should be okay too since int implements IComparable
    private MyClass<MyFooClass> _myFooClass; // This should get a compile error since MyFooClass doesn't implement IComparable
}

希望我的例子很清楚。我只想MyClass<T>允许实现IComparable. where如果我没记错的话,我知道该约束仅适用于类。这是可能的还是有人可以提供解决方法?

4

2 回答 2

4

Generic constraint也适用于接口。从文档

其中 T : class 类型参数必须是引用类型,包括任何类、接口、委托或数组类型。

因此,您可以使用关键字wherewith IComparable

public class MyClass<T> where T : IComparable
{

}
于 2012-10-16T05:16:25.120 回答
3

Generic 也适用于接口

public class MyClass<T> where T: IComparable
{
}
于 2012-10-16T05:16:22.537 回答