배열 변환(Visual Basic)

다음 조건을 충족하는 경우 배열 형식을 다른 배열 형식으로 변환할 수 있습니다.

  • 동일 순위. 두 배열의 순위는 동일해야 합니다. 즉, 두 배열의 차원 수가 동일해야 합니다. 그러나 각 차원의 길이가 같을 필요는 없습니다.

  • 요소 데이터 형식. 두 배열 요소의 데이터 형식은 참조 형식이어야 합니다. 하나 이상의 값 형식이 관련되어 있으므로 Integer 배열을 Long 배열로 변환하거나 Object 배열로 변환할 수 없습니다. 자세한 내용은 Value Types and Reference Types을 참조하세요.

  • 변환성. 두 배열의 요소 형식 간에 확대 또는 축소 변환이 가능해야 합니다. 이 요구 사항에 실패한 예제는 String 배열과 System.Attribute에서 파생된 클래스의 배열 간 변환 시도입니다. 이러한 두 형식에는 공통점이 없으며 그 사이에는 어떤 종류의 변환도 존재하지 않습니다.

한 배열 형식을 다른 배열 형식으로 변환하는 것은 각 요소의 변환이 확대 되는지 또는 축소되는지에 따라 확대되거나 축소됩니다. 자세한 내용은 Widening and Narrowing Conversions을 참조하세요.

개체 배열로 변환

Object 배열을 초기화하지 않고 선언하면 해당 요소 형식은 Object로 초기화되지 않은 상태로 유지됩니다. 특정 클래스의 배열로 설정하면 해당 클래스의 형식이 적용됩니다. 그러나 해당 기본 형식은 여전히 Object이며 이후에 관련 없는 클래스의 다른 배열로 설정할 수 있습니다. 모든 클래스가 Object에서 파생되므로 배열의 요소 형식을 모든 클래스에서 다른 클래스로 변경할 수 있습니다.

다음 예제에서는 student 형식과 String 형식 간에 변환이 없지만 둘 다 Object에서 파생되므로 모든 할당이 유효합니다.

' Assume student has already been defined as a class.  
Dim testArray() As Object  
' testArray is still an Object array at this point.  
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}  
testArray = New student(3) {}  
' testArray is now of type student().  
testArray = names  
' testArray is now a String array.  

배열의 기본 형식

원래 특정 클래스를 사용하여 배열을 선언하는 경우 해당 기본 요소 형식은 해당 클래스입니다. 이후에 다른 클래스의 배열로 설정하는 경우 두 클래스 간에 변환이 있어야 합니다.

다음 예제에서는 studentsstudent 배열입니다. Stringstudent 간에 변환이 없으므로 마지막 문이 실패합니다.

Dim students() As student  
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}  
students = New Student(3) {}  
' The following statement fails at compile time.  
students = names  

참고 항목