Matrixconversies (Visual Basic)
U kunt een matrixtype converteren naar een ander matrixtype, mits u aan de volgende voorwaarden voldoet:
Gelijke rang. De rangschikkingen van de twee matrices moeten hetzelfde zijn, dat wil gezegd, ze moeten hetzelfde aantal dimensies hebben. De lengten van de respectieve dimensies hoeven echter niet hetzelfde te zijn.
Gegevenstype element. De gegevenstypen van de elementen van beide matrices moeten verwijzingstypen zijn. U kunt een
Integer
matrix niet converteren naar eenLong
matrix of zelfs naar eenObject
matrix, omdat er ten minste één waardetype bij betrokken is. Zie Waardetypen en referentietypen voor meer informatie.Converteerbaarheid. Een conversie, ofwel widening of narrowing, moet mogelijk zijn tussen de elementtypen van de twee matrices. Een voorbeeld waarbij deze vereiste mislukt, is een poging tot conversie tussen een
String
matrix en een matrix van een klasse die is afgeleid van System.Attribute. Deze twee typen hebben niets gemeen en er bestaat geen conversie van welke aard dan ook.
Een conversie van het ene matrixtype naar het andere is breder of smaller, afhankelijk van of de conversie van de respectieve elementen breder of kleiner wordt. Zie Widening and Narrowing Conversions (Widening and Narrowing Conversions) voor meer informatie.
Conversie naar een objectmatrix
Wanneer u een Object
matrix declareert zonder deze te initialiseren, is Object
het elementtype zolang deze niet geïnitialiseerd blijft. Wanneer u deze instelt op een matrix van een specifieke klasse, wordt het type van die klasse gebruikt. Het onderliggende type is echter nog steeds Object
en u kunt het vervolgens instellen op een andere matrix van een niet-gerelateerde klasse. Aangezien alle klassen zijn afgeleid van Object
, kunt u het elementtype van de matrix wijzigen van elke klasse in een andere klasse.
In het volgende voorbeeld bestaat er geen conversie tussen typen student
en String
, maar beide zijn afgeleid van Object
, zodat alle toewijzingen geldig zijn.
' 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.
Onderliggend type van een matrix
Als u oorspronkelijk een matrix met een specifieke klasse declareert, is het onderliggende elementtype die klasse. Als u deze vervolgens instelt op een matrix van een andere klasse, moet er een conversie tussen de twee klassen zijn.
In het volgende voorbeeld students
is dit een student
matrix. Omdat er geen conversie bestaat tussen String
en student
, mislukt de laatste instructie.
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