Класс против модуля в VB - PullRequest
2 голосов
/ 15 апреля 2010

Какое преимущество, если есть, в использовании модулей вместо классов в VB? Чем они отличаются и каковы преимущества / недостатки использования модулей? В VB или VB.NET я использую оба.

Ответы [ 3 ]

7 голосов
/ 15 апреля 2010

(A) Модули

и

(B) Классы с только Shared функциями

решают одну и ту же проблему: оба позволяют логически группировать набор функций.

Преимущества использования модуля:

  • Позволяет определить методы расширения .
  • Для того, кто читает ваш код, сразу становится очевидным, что это не класс, представляющий группу объектов с состоянием, а просто «контейнер функций».

Преимущества использования класса с общими функциями:

  • Его легко расширить с помощью instance (= не общих) переменных, функций и свойств позже.

Итак, если вы пишете набор вспомогательных функций и хотите логически сгруппировать их (где концепция состояния этой группы просто не имеет смысла), используйте модуль - это это именно то, для чего они здесь. С другой стороны, если у вас есть функция, которая концептуально соответствует уже существующему классу, добавьте ее как разделяемую функцию для этого класса.

1 голос
/ 15 апреля 2010

Основное отличие состоит в том, что методы в модулях могут вызываться глобально, тогда как методы в классах не могут. Поэтому вместо ModuleName.MyMethod() вы можете просто позвонить MyMethod(). Является ли это преимуществом или недостатком, зависит от обстоятельств.

0 голосов
/ 15 апреля 2010

Модуль пришел раньше, и теперь VB.NET просто позволяет его для обратной совместимости. Модули и класс почти одинаковы. Вы можете вызвать Module.Function () напрямую, так как он обрабатывается как Shared Функция в классе. Класс, который вы можете определить Shared Функция / Метод и, кроме того, можете создать экземпляр типа Dim c as Class = New Class().

Избегайте использования модуля, вместо этого используйте класс. это хорошо для вас, чтобы написать лучшее программирование ООП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...