Создание глобальных переменных локально - PullRequest
0 голосов
/ 23 мая 2018

В VB.Net вы можете объявлять переменные локально (в методе) и иметь ли они глобальную область видимости?

Я новичок в VB.Net и пытаюсь выяснить некоторые изкак работает языкВ предыдущем проекте, который я делал с C ++, я мог внутри метода объявлять переменную как глобальную, сохраняя пространство памяти до первого вызова этого метода и создания экземпляра переменной.

Просто любопытно, если эточто-то, что возможно с VB.Net.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Итак, Джейкоб опубликовал довольно хороший ответ на мой вопрос.После нескольких исследований я думаю, что лучше всего сделать что-то похожее на следующее:

Class ScopeTest

    Private randVar As Object = Nothing

    Sub Initialize()
        randVar = New Label()
    End Sub
End Class

По сути, создайте переменную в том объеме, который мне нужен, и установите ее на Nothingтак что никакие данные (не должны быть) выделены ему, но имя переменной имеет соответствующую область видимости.Затем я просто создаю экземпляр переменной всякий раз, когда вызываю ее в первый раз, и затем она будет реализована во всем остальном коде.

Очевидно, что самая большая ошибка в этой настройке - это если я вызову объект, пока онравно Nothing.Это потребует, чтобы я добавил в код некоторые операторы If Not IsNothing, но, поскольку я не могу найти лучшего способа сделать это, я буду этим заниматься сейчас.

0 голосов
/ 23 мая 2018

Инкапсуляция в .NET может затруднить реализацию глобальной переменной так, как вы думаете о ней.Наиболее близким решением может быть объявление общедоступной переменной в модуле, но она не сразу доступна в другом модуле.

Обычно я делаю то, что вы думаете, это создание синглтон-класса "глобальные переменные"он содержит поля-члены, представляющие глобальные переменные, которые я хочу переместить, затем я просто передаю свой экземпляр «глобальные переменные» в качестве аргумента.

Public Dim myGlobals as GlobalClass
myGlobals.someVariable = "preserve me"

Затем сделайте их доступными для доступа по методу: someMethod(myGlobals) по умолчанию передаст их по ссылке.

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