Использовать имя экземпляра или формы при обращении к публичным переменным между формами? - PullRequest
2 голосов
/ 17 ноября 2009

В vb.net вы можете обращаться к публичной переменной из другой формы, используя имя формы вместе с переменной.

form2.show
form2.k = 3

Однако, если вы используете переменную формы для отображения экземпляра формы, вы должны использовать это имя переменной для обращения к публичной переменной. Два экземпляра одинаковой формы отображаются в следующем примере. Публичной переменной k присваивается значение 3 только в первом экземпляре формы, значение из form2.show. frm.k может использоваться для присвоения значения другой форме.

dim frm as new form2
form2.show
frm.show
form2.k = 3

Мой вопрос: при условии, что в приложении показан только один экземпляр формы, надежно ли обращаться к общедоступной переменной с использованием имени формы (form2.k) или лучше показать форму с переменной формы использовать это для ссылки на экземпляр формы (frm.k)? Будет ли такой же ответ применяться к свойству, а также к публичной переменной?

Ответы [ 2 ]

3 голосов
/ 17 ноября 2009

Немного разъяснений здесь. В случае использования имени формы для доступа к переменной вы по-прежнему используете экземпляр для доступа к переменной. Эта особенность VB.Net называется экземпляром по умолчанию. По сути, VB.Net будет поддерживать один экземпляр для каждого типа формы. Под капотом он переведет ваш код для доступа к этой переменной экземпляра. Это была очень популярная особенность VB6, которая была портирована на VB.Net (в 2005 году, я считаю).

Случай, когда форма показывается один раз, является точным случаем, для которого эта функция была разработана. Так что да, это надежно использовать для доступа к стоимости. Это относится к любому члену экземпляра.

Это, конечно, при условии, что все однопоточны.

0 голосов
/ 17 ноября 2009

Определенно # 2, используйте переменную экземпляра. Я не знал, что другой синтаксис все еще работает! Это был остаток от VB4, который был перенесен на VB6 для совместимости. Я думал, что они бросили это в .net. Не думаю, что это будет работать даже в C #.

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