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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы