Альтернатива указателя в C # для программиста на C ++

Я в основном программист на C ++ и несколько лет не касался C # (так что простите меня, если я задаю вопрос, который может показаться глупым в моя часть).

Справочная информация: Я пишу утилиту для упорядочивания файлов (просто для удовольствия и для того, чтобы убрать дубликаты на моем компьютере). Мне удалось выполнить контрольные суммы MD5 для файлов и файлов и найти повторяющиеся файлы в разных подкаталогах, иногда с тем же именем файла, а иногда нет (хотя всегда с одним и тем же типом файла).Сначала я сделал это, просто используя строки пути к файлу и объекты Winform, Arraylist, Arrays в коде, стоящем за «MainFrom», в качестве доказательства концепции. Код действительно уродлив, и я уже смущаюсь, глядя на него, поэтому он определенно не обслуживается.

Поэтому я решил, что более элегантным и разумным было бы сохранение в виде объекта, который будет иметь простые вещи, такие как путь к файлу, имя файла, MD5, тип файла и т. Д. И т. Д. (Да, я знаю о ФАЙЛЕ). Затем я подумал, что было бы разумно, если бы в нем были ссылки на другие экземпляры объектов, которые были «дубликатами», «похожими». Я хочу создать массив указателей, который является частью объекта, который будет указывать на повторяющиеся объекты. Таким образом, во время выполнения я мог просмотреть все дубликаты, выяснить их свойства и т. Д.

Я планировал позже унаследовать от этого класса определенные типы файлов, такие как файлы mp3 или jpg, где я мог бы сравнивать содержимое (например, : Я мог определить, какие изображения могут быть просто версиями друг друга с измененным размером и указывать друг на друга). Но в C # нет указателей. Я смотрел на делегатов, но опять же, это не совсем то, что мне нужно.

Моя дилемма: C # не имеет указателя в управляемом коде (я не хочу использовать неуправляемые разделы, если в этом нет крайней необходимости).

Я также думал о создании чего-то вроде arrayylist и передачи «объектов» во время выполнения. Но разве это не создает дубликатов? на самом деле это не ссылка на новый объект, не так ли?

Я бы очень признателен за совет от тех, кто осуществил переход C ++ на C # , как мне выйти за рамки этого.Пожалуйста, дайте мне знать, если я полностью ошибаюсь в дизайне. (Я предполагаю, что, поскольку они оба объектно-ориентированы, такой дизайн будет работать в обоих мирах).

Я был бы очень признателен за ссылки на другие источники, которые могут помочь (поскольку я не первый программист на C ++, пытающийся кодировать на C #). Заранее спасибо!

5
задан uberspaceguru 20 January 2012 в 16:50
поделиться