我需要确保一个数据类型实现了IComparable接口,我想知道在创建对象时是否还有一个要求?
答案 0 :(得分:4)
您可以使用generic来执行此操作,例如:
public static T Create<T>() where T : IComparable<T>, new() {
return new T();
}
或者如果你的意思是“当你创建类型”(在代码中),那么不;你只需要记住,也许使用单元测试来验证你已经完成了它。
我建议使用键入的IComparable<T>
而不是IComparable
- 这会让生活变得更轻松(并避免一些拳击,但这不是一个问题)。最后,请记住,如果您想对可比较位进行删除(例如Comparer<T>.Default
如何工作),则可以在代码中使用Comparer.Default
和List<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);