실제 프로그래밍에서 배열은 많이 사용되는 객체입니다. Array, List 등과 마찬가지로 모두 배열을 캡슐화한 것입니다.
다음 두 가지 정의 방법의 차이점을 살펴보겠습니다.
Dim tB1()을 바이트로 표시
Dim tB2() As Byte = {}
둘 다 바이트 배열을 정의하며 배열에 요소가 없습니다.
그러나 차이점은 다음 두 문장에서 볼 수 있습니다.
Debug.Print(tB1은 아무것도 아닙니다)
Debug.Print(tB2는 아무것도 아닙니다)
첫 번째 문장의 결과는 True이고, 두 번째 문장의 결과는 False입니다. tB1은 배열이지만 초기화되지 않았으며 이는 Nothing과 동일합니다. tB2는 배열이지만 요소가 없지만 초기화되었으며 Nothing과 동일하지 않습니다. 길이이며 결과는 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개인 배열 사이에는 여전히 차이가 있음을 알 수 있습니다. 이는 우리가 쉽게 간과할 수 있는 부분입니다.