Логическая операция > не работает с обобщениями - C#
Формулировка задачи:
1. При при применение операции > у меня появляется следующая ошибка : cannot apply operator '>' to operands of type TSort and TSort. Как вариант решения проблемы я использовал метод Equals. Но хочу понять, почему нельзя применять логические операции к обобщенным типам и какие еще способы возможны решения этого вопроса? Метод обобщенным мне делать не нужно. Мне нужно сортировать массив базового класса в производном.
2. Почему при накладывание ограничение на обобщенный тип, возникает следующая ошибка there is no suitable method for override
в результате
я так понимаю, ограничения на абстрактный класс не существует?
class Sort<TSort> where TSort : AbstrSort
{ public abstract void SortArray(); public abstract void ShowArray(); public abstract void SortHandler(object source, MySortEvent e); } class Sort<TSort> : AbstrSort { protected TSort[] array; public Sort(TSort[] array) { this.array = array; } protected int length; public int Length { get { return length; } } public event SortDelegate SortEvent; public void OnSortEvent() { if (SortEvent != null) { SortEvent(this, new MySortEvent("Произошла сортировка")); } } public override void SortArray() { } public override void ShowArray() { } public override void SortHandler(object source, MySortEvent e) { } } lass BubbleSort <TSort> : Sort<TSort> { public BubbleSort(TSort[] obj) :base (obj) { } public override void SortArray() { try { for (int i = 0; i < array.Length; i++) { for (int j = array.Length - 1; j > i; j--) { if (array[j - 1] > array[j]) { TSort temp = array[j]; array[j] = array[j - 1]; array[j - 1] = temp; } } } } catch (IndexOutOfRangeException e) { Console.WriteLine(e.Message); } } }
Решение задачи: «Логическая операция > не работает с обобщениями»
textual
Листинг программы
class Sort<TSort> : AbstrSort where TSort : AbstrSort
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д