Arraykonvertierungen (Visual Basic)

Sie können einen Arraytyp in einen anderen Arraytyp konvertieren, sofern Sie die folgenden Bedingungen erfüllen:

  • Gleich rangieren. Die Rangfolgen der beiden Arrays müssen identisch sein, d. h. sie müssen dieselbe Anzahl von Dimensionen aufweisen. Die Längen der jeweiligen Dimensionen müssen jedoch nicht identisch sein.

  • Elementdatentyp. Die Datentypen der Elemente beider Arrays müssen Referenztypen sein. Sie können ein Integer-Array nicht in ein Long-Array oder sogar in ein Object-Array konvertieren, da mindestens ein Werttyp beteiligt ist. Weitere Informationen finden Sie unter Value Types and Reference Types.

  • Konvertibilität. Eine Konvertierung, die entweder erweitert oder schmal ist, muss zwischen den Elementtypen der beiden Arrays möglich sein. Ein Beispiel, bei dem diese Anforderung fehlschlägt, ist eine versuchte Konvertierung zwischen einem String-Array und einem Array einer Klasse, die von System.Attribute abgeleitet wird. Diese beiden Typen haben nichts gemeinsam, und es gibt keine Konvertierung zwischen ihnen.

Eine Umwandlung eines Arraytyps in einen anderen wird je nachdem, ob die Umwandlung der jeweiligen Elemente verbreitert oder eingeschränkt ist. Weitere Informationen finden Sie unter Widening and Narrowing Conversions.

Konvertierung in ein Objektarray

Wenn Sie ein Object-Array deklarieren, ohne es zu initialisieren, ist Object der Elementtyp so lange, wie es nicht initialisiert bleibt. Wenn Sie es auf ein Array einer bestimmten Klasse festlegen, übernimmt sie den Typ dieser Klasse. Der zugrunde liegende Typ ist jedoch weiterhin Object vorhanden, und Sie können ihn anschließend auf ein anderes Array einer nicht verknüpften Klasse festlegen. Da alle Klassen von Object abgeleitet sind, können Sie den Elementtyp des Arrays von einer beliebigen Klasse in jede andere Klasse ändern.

Im folgenden Beispiel ist keine Konvertierung zwischen Typen student und String, aber beide abgeleitet von Object, sodass alle Zuordnungen gültig sind.

' 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.  

Zugrunde liegender Typ eines Arrays

Wenn Sie ein Array ursprünglich mit einer bestimmten Klasse deklarieren, ist der zugrunde liegende Elementtyp diese Klasse. Wenn Sie es anschließend auf ein Array einer anderen Klasse festlegen, muss eine Konvertierung zwischen den beiden Klassen vorhanden sein.

Im folgenden Beispiel ist students ein student-Array. Da zwischen String und student keine Konvertierung vorhanden ist, schlägt die letzte Anweisung fehl.

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  

Siehe auch