Логическая операция > не работает с обобщениями - 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