C# 如何确保数据类型实现IComparable接口
我需要确保数据类型实现IComparable接口,我想知道在创建对象时是否有这样的要求?您可能可以使用generic来实现这一点,例如: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(); } 或者,如果您的意思是“当您创建类型时”(在代码中),
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
等等),请澄清问题。我能想到很多你可能想表达的意思,但它们都有不同的答案。