Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > VB .NET > Область видимости модулей |
Автор: LittleLoya 10.3.2013, 23:17 |
Всем привет! Не могу разобраться, подскажите пожалуйста: почему когда я объявляю Public функцию в модуле, то она доступна в других модулях, а когда я объявляю Public структуру, то её не видно, пока не объявить модуль как Pablic? P.S. Студия 2008-ая. Заранее всем спасибо! |
Автор: diadiavova 10.3.2013, 23:38 |
А можно поинтересоваться зачем это нужно? Я вообще никогда не слышал, чтобы паблик структуру в модуле объявляли. Нет, понятно, что такое возможно, но зачем? ![]() |
Автор: LittleLoya 11.3.2013, 01:38 |
Эм... Я слегка растерянна, но мне кажется, что Вы не правы насчёт структур... |
Автор: diadiavova 11.3.2013, 09:04 |
Во-первых, я ровным счётом ничего не сказал относительно структур как таковых, а всего лишь высказал сомнение в целесообразности их объявления в модуле и поинтересовался для чего это нужно. Во-вторых, прав я или нет - об этом можно будет судить после того, как будут озвучены мотивы такого использования модулей и структур. Просто моих знаний о модулях и структурах, а так же моей буйной фантазии явно не хватает на то, чтобы придумать сценарий, в котором объявление публичной структуры в модуле было бы оправдано и пока такой сценарий не будет предложен, как мне кажется, обсуждать просто нечего. По сабжу могу высказать предположение, что такое использование модуля не даёт обычных его преимуществ, в силу того, что модуль для этого просто не предназначен. |
Автор: LittleLoya 11.3.2013, 20:12 |
Прошу прощения, я Вас не так поняла!!! Уже просто опилки набекрень были. ![]() Объявляю в модуле, просто для удобства, в проекте планируется несколько структур и хотела вынести их все в отдельный модуль, что-то вроде AllStructures. И где в таком случае следует объявлять структуры? В модуле формы? |
Автор: diadiavova 11.3.2013, 20:34 |
Для этого существуют пространства имён. Э мммм... где? ![]() 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). Пойду учить мат.часть! ![]() diadiavova, спасибо! |
Автор: diadiavova 12.3.2013, 09:17 |
Так всё-таки нужны были не структуры, а глобальные переменные? Честно говоря, идея - тоже так себе, этого по возможности надо избегать, а если уже никак без этого, то хотяб сделать их свойствами, а не переменными. Ну и потом опять-таки, почему структуры? Структуры нужны для легковесных объектов с коротким сроком жизни, они хранят данные в стеке приложения и таким образом удаётся избегать фрагментации кучи. Глобальные объекты живут долго, и зачем ими забивать стек приложения - непонятно. |
Автор: LittleLoya 14.3.2013, 21:22 |
Да, я тут уже тоже пришла к выводу, что видимо лучше запаковать всё это в класс, т.к. переменных около 20, плюс - некоторые из них это динамические массивы (т.к. неизвестно количество строк заранее). Ну и они инициируются (переменные бывшей структуры) на разных этапах работы приложения. Ещё раз спасибо! |