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

C# 如何确保数据类型实现IComparable接口,c#,interface,C#,Interface,我需要确保数据类型实现IComparable接口,我想知道在创建对象时是否有这样的要求?您可能可以使用generic来实现这一点,例如: public static T Create<T>() where T : IComparable<T>, new() { return new T(); } publicstatict Create(),其中T:IComparable,new(){ 返回新的T(); } 或者,如果您的意思是“当您创建类型时”(在代码中),

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

您可能可以使用generic来实现这一点,例如:

public static T Create<T>() where T : IComparable<T>, new() {
    return new T();
}
publicstatict Create(),其中T:IComparable,new(){
返回新的T();
}
或者,如果您的意思是“当您创建类型时”(在代码中),则否;您只需要记住,也许可以使用单元测试来验证您已经完成了


我建议使用键入的
IComparable
而不是
IComparable
——这会使生活更轻松(并避免一些装箱,但这不是什么问题)。最后,请记住,如果要在代码中键入可比较的位(如
List.Sort()
的工作方式),可以使用
Comparer.Default
Comparer.Default

对于泛型类,可以执行以下操作:

public class MyType<T>
   where T:IComparable<T>
公共类MyType
其中T:i可比较

您可能还需要查看。据我所知,它首先得到IComparable,如果它找不到,那么它得到IComparable版本,否则它会抛出一个异常

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

我相信如果它找不到合适的IComparableWell,
IComparable
,然后
IComparable
,然后抛出(不是
IComparer
等等),请澄清问题。我能想到很多你可能想表达的意思,但它们都有不同的答案。