Один и тот же код на С++ и С#, Шаблоны, отображение содержимого шаблонного класса - C#

Узнай цену своей работы

Формулировка задачи:

написан на С++ шаблонный класс "List" созданный для создания списковой структуры внутри двоичного файла ([элемент][номер байта с которого следует читать следующий элемент(указатель)]) предусматривается работа с любыми данными для которых перегружены операции < > = cout Для класса "List" определены операции ввода нового, удаления по номеру, сортировка, балансировка(Так как при удалении физически элемент не удаляется из двоичного файла, а переписываются указатели, спустя какое то время накапливаются элементы на которые нет ссылок но занимают память, функция балансировки переписывает файл уже без удаленных элементов) следует переделать эту работу на С#, отображая на форме все данные о классе. собственно мои вопросы: 1) отличие шаблонов в C++ и C# 2) если в С++ можно было перегрузить cout для корректного отображение элементов любого типа то что следует сделать в С# c формами? Была идея отображать информацию в ListView, программно инициализируя новые колонки, но для этого надо знать количество полей класса и их имена. Есть ли в С# средства для подсчета количества полей класса? Приветствуются любые советы ^^

Решение задачи: «Один и тот же код на С++ и С#, Шаблоны, отображение содержимого шаблонного класса»

textual
Листинг программы
public static T ReadStruct<T>(this BinaryReader reader) where T : struct
{
    byte[] rawData = reader.ReadBytes(Marshal.SizeOf(typeof(T)));
    GCHandle handle = GCHandle.Alloc(rawData, GCHandleType.Pinned);
    var returnObject = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T));
    handle.Free();
    return returnObject;
}

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


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

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

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