В реальном программировании массивы — это часто используемые объекты. Подобно Array, List и т. д., все они являются инкапсуляциями массивов.
Давайте посмотрим на следующие два метода определения. Можем ли мы увидеть разницу между ними?
Dim tB1() как байт
Dim tB2() как байт = {}
Оба они определяют массив байтов, и в массиве нет элементов.
Но разницу можно увидеть в следующих двух предложениях.
Debug.Print(tB1 — ничего)
Debug.Print(tB2 — ничего)
Результатом первого предложения является «Истина», а результатом второго предложения — «Ложь». Обратите внимание, что tB1 — это массив, но он не инициализирован, что эквивалентно Nothing. tB2 — это массив. Хотя он не имеет элементов, он инициализирован и не эквивалентен Nothing. Вы можете получить доступ к другим свойствам tB2. Длина, а результат — 0, что указывает на пустой массив. Доступ к другим атрибутам tB1, таким как длина, приведет к ошибке.
Во многих местах по-прежнему существуют различия между пустыми и неинициализированными массивами.
Например:
Debug.Print(System.Text.Encoding.Default.GetString(tB1))
Debug.Print(System.Text.Encoding.Default.GetString(tB2))
Хотя в tB1 и tB2 нет элементов, система выдаст исключение, поскольку tB1 не был инициализирован. Хотя tB2 не имеет элементов, он представляет собой массив с 0 элементами. Система не выдаст исключение и не вернет пустую строку.
Из этого видно, что разница между Nothing и массивом из 0 элементов все еще существует. Это то, что мы легко упускаем из виду.