Freigeben über


Arraykonvertierungen

Aktualisiert: November 2007

Ein Arraytyp kann in einen anderen Arraytyp konvertiert werden, wenn die folgenden Bedingungen zutreffen:

  • Gleicher Rang. Die beiden Arrays müssen denselben Rang haben, d. h. die Anzahl der Dimensionen muss gleich sein. Dabei kann die Länge der jeweiligen Dimensionen auch unterschiedlich sein.

  • Elementdatentyp. Bei den Datentypen der Elemente beider Arrays muss es sich um Verweistypen handeln. Sie können ein Integer-Array nicht in ein Long-Array oder gar in ein Object-Array konvertieren, da mindestens ein Werttyp betroffen ist. Weitere Informationen finden Sie unter Wert- und Verweistypen.

  • Konvertierbarkeit. Zwischen den Elementtypen der beiden Arrays muss eine Konvertierung (erweiternde oder einschränkende Konvertierung) möglich sein. Ein Beispiel, das diese Anforderung nicht erfüllt, ist eine versuchte Konvertierung zwischen einem String-Array und einem Array einer Klasse, die von System.Attribute abgeleitet ist. Diese beiden Typen haben keine Gemeinsamkeiten, sodass keinerlei Konvertierung möglich ist.

Je nachdem, ob die betreffenden Elemente erweitert oder eingeschränkt werden, wird die Konvertierung eines Arraytyps in einen anderen als erweiternde bzw. als eingrenzende Konvertierung bezeichnet. Weitere Informationen finden Sie unter Erweiternde und eingrenzende Konvertierungen.

Konvertierung in ein Object-Array

Wenn Sie ein Object-Array deklarieren, ohne es zu initialisieren, lautet der Wert des dazugehörigen Elementtyps bis zur Initialisierung Object. Wenn Sie es als Array einer bestimmten Klasse deklarieren, nimmt es den Typ dieser Klasse an. Der zugrunde liegende Typ ist jedoch immer noch Object, und Sie können das Array nachfolgend als ein anderes Array einer nicht damit zusammenhängenden Klasse festlegen. Da alle Klassen von Object abgeleitet werden, können Sie den Elementtyp des Arrays von einer beliebigen Klasse in eine beliebige andere Klasse ändern.

Im folgenden Beispiel findet zwischen den Typen student und String keine Konvertierung statt, aber beide werden von Object abgeleitet, sodass alle Zuweisungen 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 deklariert haben, hat sein zugrunde liegender Elementtyp diese Klasse. Wenn Sie das Array nachfolgend als andere Klasse deklarieren muss eine Konvertierung zwischen den beiden Klassen erfolgen.

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

Aufgaben

Gewusst wie: Konvertieren eines Objekts in einen anderen Typ in Visual Basic

Konzepte

Datentypen in Visual Basic

Implizite und explizite Konvertierungen

Wertänderungen durch Konvertierungen

Konvertierungen zwischen Zeichenfolgen und anderen Typen

Typenloses Programmieren in Visual Basic

Referenz

Datentyp: Zusammenfassung (Visual Basic)

Funktionen für die Typkonvertierung

Weitere Ressourcen

Typkonvertierung in Visual Basic

Arrays in Visual Basic