Delen via


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 een Long matrix of zelfs naar een Object 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 Objecten 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  

Zie ook