Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Область видимости модулей


Автор: LittleLoya 10.3.2013, 23:17
Всем привет!
Не могу разобраться, подскажите пожалуйста: почему когда я объявляю Public функцию в модуле, то она доступна в других модулях, а когда я объявляю Public структуру, то её не видно, пока не объявить модуль как Pablic?

P.S. Студия 2008-ая.

Заранее всем спасибо!

Автор: diadiavova 10.3.2013, 23:38
А можно поинтересоваться зачем это нужно? Я вообще никогда не слышал, чтобы паблик структуру в модуле объявляли.  Нет, понятно, что такое возможно, но зачем? smile

Автор: LittleLoya 11.3.2013, 01:38
Эм... Я слегка растерянна, но мне кажется, что Вы не правы насчёт структур...

Автор: diadiavova 11.3.2013, 09:04
Во-первых, я ровным счётом ничего не сказал относительно структур как таковых, а всего лишь высказал сомнение в целесообразности их объявления в модуле и поинтересовался для чего это нужно.
Во-вторых, прав я или нет - об этом можно будет судить после того, как будут озвучены мотивы такого использования модулей и структур. Просто моих знаний о модулях и структурах, а так же моей буйной фантазии явно не хватает на то, чтобы придумать сценарий, в котором объявление публичной структуры в модуле было бы оправдано и пока такой сценарий не будет предложен, как мне кажется, обсуждать просто нечего.
По сабжу могу высказать предположение, что такое использование модуля не даёт обычных его преимуществ, в силу того, что модуль для этого просто не предназначен.

Автор: LittleLoya 11.3.2013, 20:12
Прошу прощения, я Вас не так поняла!!! Уже просто опилки набекрень были. smile

Объявляю в модуле, просто для удобства, в проекте планируется несколько структур и хотела вынести их все в отдельный модуль, что-то вроде AllStructures. И где в таком случае следует объявлять структуры? В модуле формы?

Автор: diadiavova 11.3.2013, 20:34
Цитата(LittleLoya @  11.3.2013,  21:12 Найти цитируемый пост)
И где в таком случае следует объявлять структуры?

Для этого существуют пространства имён.
Цитата(LittleLoya @  11.3.2013,  21:12 Найти цитируемый пост)
 В модуле формы?

Э мммм... где? smile Проект точно на vb.net пишется или это vb6 всё-таки?

http://msdn.microsoft.com/ru-ru/library/zt9tafza.aspx
http://msdn.microsoft.com/ru-ru/library/aaxss7da.aspx

Автор: LittleLoya 11.3.2013, 23:46
Во! Если объявить переменную типа структуры в том же модуле, где объявлена структура, то она видна во всём проекте!

Я видимо и вправду легкомысленно отнеслась к разнице между vb6.0 и vb.net (начинала с vb6.0). Пойду учить мат.часть! smile

diadiavova, спасибо!

Автор: diadiavova 12.3.2013, 09:17
Так всё-таки нужны были не структуры, а глобальные переменные? Честно говоря, идея - тоже так себе, этого по возможности надо избегать, а если уже никак без этого, то хотяб сделать их свойствами, а не переменными. Ну и потом опять-таки, почему структуры? Структуры нужны для легковесных объектов с коротким сроком жизни, они хранят данные в стеке приложения и таким образом удаётся избегать фрагментации кучи. Глобальные объекты живут долго, и зачем ими забивать стек приложения - непонятно.

Автор: LittleLoya 14.3.2013, 21:22
Да, я тут уже тоже пришла к выводу, что видимо лучше запаковать всё это в класс, т.к. переменных около 20, плюс - некоторые из них это динамические массивы (т.к. неизвестно количество строк заранее). Ну и они инициируются (переменные бывшей структуры) на разных этапах работы приложения.

Ещё раз спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)