Na programação real, arrays são objetos muito usados. Assim como Array, List, etc., todos são encapsulamentos de arrays.
Vamos dar uma olhada nos dois métodos de definição a seguir. Podemos ver a diferença entre eles?
Dim tB1() como byte
Dim tB2() como byte = {}
Ambos definem uma matriz de bytes e não há elementos na matriz.
Mas a diferença pode ser vista nas duas frases a seguir.
Debug.Print (tB1 não é nada)
Debug.Print (tB2 não é nada)
O resultado da primeira frase é Verdadeiro e o resultado da segunda frase é Falso. Observe que tB1 é um array, mas não foi inicializado, o que equivale a Nothing. Embora não possua elementos, tB2 é equivalente a Nothing. Comprimento e o resultado é 0, indicando que é uma matriz vazia. Acessar outros atributos de tB1, como Comprimento, resultará em erro.
Ainda existem diferenças entre arrays vazios e arrays não inicializados em muitos lugares.
Por exemplo:
Debug.Print(System.Text.Encoding.Default.GetString(tB1))
Debug.Print(System.Text.Encoding.Default.GetString(tB2))
Embora não haja elementos em tB1 e tB2, o sistema lançará uma exceção porque tB1 não foi inicializado. Embora tB2 não possua elementos, ele representa um array com 0 elementos. O sistema não lançará uma exceção e retornará uma string vazia.
Pode-se ver a partir disso que ainda há uma diferença entre Nothing e uma matriz de 0 elementos. Isso é algo que facilmente ignoramos.