Использование дженериков в функциях, создающих объектыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование дженериков в функциях, создающих объекты

Сообщение Anonymous »


У меня есть собственный класс под названием CustomList, который работает так же, как массив, но позволяет добавлять элементы и динамически увеличиваться в размере по мере необходимости.

У меня есть функция MergeSort, с которой я хочу работать с CustomList и стандартными массивами.

Я пробовал следующее:

публичный класс Sorter где T: IEnsemble { общедоступный статический IEnsemble MergeSort (массив IEnsemble) { IEnsemble рез; если (массив.Длина > 1) { IEnsemble left = MergeSort(array[0..(array.Length / 2)]); IEnsemble right = MergeSort(array[(array.Length / 2)..]); res = MergeSort (слева, справа); вернуть разрешение; } еще {возврат массива; } } public static IEnsemble MergeSort (IEnsemble слева, IEnsemble справа) { интервал leftPointer = 0; int rightPointer = 0; IEnsemble res = новый IEnsemble(left.Length + right.Length); while (leftPointer < left.Length || rightPointer < right.Length) { if (rightPointer == right.Length || (leftPointer < left.Length && left[leftPointer].CompareTo(right[rightPointer]) < 0)) { res[leftPointer + rightPointer] = left[leftPointer]; левыйУказатель++; } еще { res[leftPointer + rightPointer] = right[rightPointer]; правыйУказатель++; } } вернуть разрешение; } при таком интерфейсе:

общедоступный интерфейс IEnsemble { Т это [int я] {получить; набор; } IEnsemble this[Диапазон диапазона] { get; } int Длина {получить; } } Я обнаружил две проблемы, которые не знаю, как исправить.
[*]Я не могу заставить операцию диапазона возвращать базовый класс, поэтому мне приходится возвращать интерфейс. Я не знаю, является ли это проблемой, поскольку я не могу запустить его по следующим причинам: IEnsemble res = new IEnsemble(left.Length + right.Length); не будет работать, поскольку IEnsemble — это интерфейс.IEnsemble ли>
Вкратце: я хочу создать общую функцию для сортировки слиянием в пользовательском классе коллекции, имеющую индексацию и диапазон, которая также работает со стандартными массивами. Возможно ли это, и если да, то как это сделать?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сообщения между пользователями Blazor с использованием событий, создающих ошибки
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Несколько «приложений» в CherryPy, создающих ошибки 404?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Возможно ли иметь класс, но затем вызывать объекты этого класса для использования в функциях? [дубликат]
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Использование дженериков для создания класса обхода узла?
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Использование дженериков для создания класса обхода узла?
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»