Мне нужно убедиться, что тип данных реализует интерфейс IComparable, и мне было интересно, если бы это было так, чтобы создать это требование при создании объекта?
Возможно, вы можете использовать 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()
).
Для общего класса вы можете:
public class MyType<T>
where T:IComparable<T>
Вы также можете посмотреть в Comparer <T> .Default. Из того, что я понимаю, сначала получается IComparable <T> , если он не может найти, что тогда он получает версию IComparable, в противном случае он генерирует исключение.
double s = 5;
double t = 10;
int result = Comparer<double>.Default.Compare(s, t);
IComparable<T>
, затем IComparable
, затем бросить (не IComparer<T>
т. Д.)