Freigeben über


Arraykonvertierungen (Visual Basic)

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

  • Gleich Rang. Die Rangfolgen der beiden Arrays müssen identisch sein, d. h. sie müssen dieselbe Anzahl von Dimensionen haben. Die Längen der jeweiligen Abmessungen 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 Werttypen und Referenztypen.

  • Konvertierbarkeit. Eine Konvertierung, entweder Verbreiterung oder Eingrenzung, muss zwischen den Elementtypen der beiden Arrays möglich sein. Ein Beispiel, bei dem diese Anforderung fehlschlägt, ist der Versuch einer Konvertierung zwischen einem String-Array und einem Array einer Klasse, die von System.Attribute abgeleitet ist. Diese beiden Typen haben nichts gemeinsam, und es gibt keine Konvertierung jeglicher Art zwischen ihnen.

Die Umwandlung eines Arraytyps in einen anderen ist entweder eine Verbreiterung oder eine Verkleinerung, abhängig davon, ob die Umwandlung der jeweiligen Elemente eine Verbreiterung oder eine Verkleinerung darstellt. 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 besteht jedoch weiterhin als Object, und Sie können ihn anschließend auf ein Array einer anderen, unabhängigen Klasse festlegen. Da alle Klassen von Object abgeleitet sind, können Sie den Elementtyp des Arrays von einer beliebigen Klasse in jede andere Klasse anpassen.

Im folgenden Beispiel gibt es keine Konvertierung zwischen den Typen student und String. Beide leiten sich jedoch von Object ab, 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 students handelt es sich um ein student Array. Da keine Konvertierung zwischen String und student 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