배열 변환(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.
배열의 기본 형식
원래 특정 클래스를 사용하여 배열을 선언하는 경우 해당 기본 요소 형식은 해당 클래스입니다. 이후에 다른 클래스의 배열로 설정하는 경우 두 클래스 간에 변환이 있어야 합니다.
다음 예제에서는 students
은 student
배열입니다. String
과 student
간에 변환이 없으므로 마지막 문이 실패합니다.
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
참고 항목
.NET