Dela via


Matriskonverteringar (Visual Basic)

Du kan konvertera en matristyp till en annan matristyp förutsatt att du uppfyller följande villkor:

  • Lika med rangordning. Rangordningen för de två matriserna måste vara densamma, dvs. de måste ha samma antal dimensioner. Längden på respektive dimensioner behöver dock inte vara densamma.

  • Elementdatatyp. Datatyperna för elementen i båda matriserna måste vara referenstyper. Du kan inte konvertera en Integer matris till en Long matris, eller ens till en Object matris, eftersom minst en värdetyp ingår. Mer information finns i Värdetyper och Referenstyper.

  • Konvertibilitet. En konvertering, som antingen utvidgas eller begränsas, måste vara möjlig mellan elementtyperna i de två matriserna. Ett exempel som misslyckas med det här kravet är ett konverteringsförsök mellan en String matris och en matris med en klass som härletts från System.Attribute. Dessa två typer har inget gemensamt och det finns ingen konvertering av något slag mellan dem.

En konvertering av en matristyp till en annan utvidgas eller begränsas beroende på om konverteringen av respektive element utvidgas eller begränsas. Mer information finns i Widening and Narrowing Conversions (Bredda och begränsa konverteringar).

Konvertering till en objektmatris

När du deklarerar en Object matris utan att initiera den är Object dess elementtyp så länge den förblir onitialiserad. När du ställer in den på en matris med en specifik klass, tar den på sig typen av den klassen. Den underliggande typen är dock fortfarande Object, och du kan sedan ange den till en annan matris med en orelaterad klass. Eftersom alla klasser härleds från Objectkan du ändra matrisens elementtyp från vilken klass som helst till vilken annan klass som helst.

I följande exempel finns det ingen konvertering mellan typer student och String, men båda härleds från Object, så alla tilldelningar är giltiga.

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

Underliggande typ av en matris

Om du ursprungligen deklarerar en matris med en specifik klass är dess underliggande elementtyp den klassen. Om du senare anger den till en matris med en annan klass måste det finnas en konvertering mellan de två klasserna.

I följande exempel students är en student matris. Eftersom det inte finns någon konvertering mellan String och studentmisslyckas den sista instruktionen.

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  

Se även