Есть ли разница между vbNullString и ""?

В VBA будет ли какая-либо разница, если я сравню строку или подобное с vbNullString вместо пустой строки; ""? Если да, то какие различия между ними?

Ответ 1

vbNullString и "" отличаются. Ниже приведен пример веб-страницы, описывающий различия в использовании памяти.


"Это обычный способ очистки строковой переменной.

Text$ = ""

Какая трата! Прежде всего, строка "" занимает 6 байт ОЗУ каждый раз, когда вы ее используете. Рассмотрим альтернативу:

Text$ = vbNullString

Так что это? vbNullString - специальная константа VB, которая обозначает пустую строку. Литерал "" представляет собой пустую строку. Там важная разница. Пустая строка - настоящая строка. Нулевая строка - нет. Это всего лишь ноль. Если вы знаете язык C, vbNullString является эквивалентом NULL.

Для большинства целей vbNullString эквивалентен "" в VB. Единственное практическое отличие заключается в том, что vbNullString быстрее назначает и обрабатывает и занимает меньше памяти.

Если вы вызываете какой-либо API или компонент, отличный от VB, протестируйте вызовы с помощью vbNullString до распространения вашего приложения. Функция, которую вы вызываете, может не проверять строку NULL, и в этом случае она может упасть. Функции Non-VB должны проверять значение NULL перед обработкой строкового параметра. С неудачей, конкретная функция, которую вы вызываете, не делает этого. В этом случае используйте "". Обычно API поддерживают vbNullString, и они могут даже лучше работать с ним! "


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

Полная веб-страница: http://www.aivosto.com/vbtips/stringopt.html

Ответ 2

В этом сравнении указано, что для назначения переменной "" переменной используется 6 байт памяти, тогда как использование vbNullString не будет использовать какую-либо память.

Лично я предпочитаю оценивать длину строки. Если длина равна 0, то мы также приходим к выводу, что строка равна vbNullString или "". Этот метод считается самым быстрым методом проверки на vbNullString.

If Len(string) = 0 Then

Здесь вы можете прочитать сравнение Len vs vbNullString vs "" здесь.