如何确保数据类型实现IComparable接口

时间:2009-03-27 13:01:58

标签: c# interface

我需要确保一个数据类型实现了IComparable接口,我想知道在创建对象时是否还有一个要求?

3 个答案:

答案 0 :(得分:4)

您可以使用generic来执行此操作,例如:

public static T Create<T>() where T : IComparable<T>, new() {
    return new T();
}

或者如果你的意思是“当你创建类型”(在代码中),那么不;你只需要记住,也许使用单元测试来验证你已经完成了它。

我建议使用键入的IComparable<T>而不是IComparable - 这会让生活变得更轻松(并避免一些拳击,但这不是一个问题)。最后,请记住,如果您想对可比较位进行删除(例如Comparer<T>.Default如何工作),则可以在代码中使用Comparer.DefaultList<T>.Sort()

答案 1 :(得分:1)

对于通用类,您可以这样做:

public class MyType<T>
   where T:IComparable<T>

答案 2 :(得分:0)

您也可以查看Comparer<T>.Default。根据我的理解,它得到IComparable&lt; T&gt;首先,如果它找不到,那么它将获得IComparable版本,否则会引发异常。

double s = 5;
double t = 10;
int result = Comparer<double>.Default.Compare(s, t);