2009-08-06 2 views
4

Итак, я программировал на C# в течение последних 6 лет или около того, и теперь у меня на ногах мокрые VB.net.Visual Basic Module v Singleton

Кодовая база, с которой я работаю, использует некоторые модули. Для меня модуль очень похож на синглтон. Только один существует; его можно назвать где угодно внутри пространства имен.

Есть ли что-то, что мне не хватает здесь? Не поддерживает ли VB обычный способ структурирования singleton (поле частного конструктора/публичного экземпляра)?

ответ

6

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

Основные различия между C# статический класс и модуль VB.Net являются ...

  • Не нужно добавить Static/Shared отборочные к методам в модуле. Они по умолчанию по умолчанию, и вы не можете изменить это.
  • Если модуль находится в Импортированном пространстве имен, все его методы доступны без квалификации.
  • Статические классы в C# могут быть универсальными, модули не могут (хотя они могут иметь общие элементы)
+0

Так что в основном с модулем это похоже на прохождение и объявление каждого из статичных (что требовалось бы на C#). Тогда разница между этим и одиночным тоном заключается в том, что singleton поддерживает наследование (как производный класс или интерфейс) и полиморфизм, где модуль - это то, что он есть? Я просто разбираюсь во всем. –

+0

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

3

Если я не ошибаюсь, модуль VB это то же самое, как статический класс.

+1

Есть тонкие различия между 2, но да на высоком уровне они одинаковы. – JaredPar