Sdílet prostřednictvím


Převody pole (Visual Basic)

Typ pole můžete převést na jiný typ pole za předpokladu, že splňujete následující podmínky:

  • Rovná se pořadí. Pořadí obou polí musí být stejné, to znamená, že musí mít stejný počet dimenzí. Délky příslušných dimenzí ale nemusí být stejné.

  • Datový typ elementu Datové typy prvků obou polí musí být odkazovými typy. Pole nelze převést Integer na Long matici nebo dokonce na Object matici, protože je zapojen alespoň jeden typ hodnoty. Další informace naleznete v tématu Typy hodnot a odkazové typy.

  • Převodnost. Převod, buď rozšiřující, nebo zúžený, musí být možný mezi typy prvků dvou polí. Příkladem selhání tohoto požadavku je pokus o převod mezi String polem a polem třídy odvozené z System.Attribute. Tyto dva typy nemají nic společného a mezi nimi neexistuje žádný převod jakéhokoli druhu.

Převod jednoho typu pole na jiný se rozšiřuje nebo zúží v závislosti na tom, zda je převod příslušných prvků rozšiřující nebo zúžený. Další informace naleznete v tématu Rozšíření a zužování převodů.

Převod na pole objektů

Když deklarujete Object pole bez inicializace, jeho typ prvku je Object tak dlouho, dokud zůstane neinicializován. Když ji nastavíte na pole konkrétní třídy, převezme typ této třídy. Jeho základní typ je však stále Objecta můžete ho následně nastavit na jiné pole nesouvisející třídy. Vzhledem k tomu, že všechny třídy odvozují Object, můžete změnit typ prvku pole z libovolné třídy na jakoukoli jinou třídu.

V následujícím příkladu neexistuje žádný převod mezi typy student a String, ale oba odvozeny z Object, takže všechna přiřazení jsou platná.

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

Základní typ pole

Pokud jste původně deklarovali pole s určitou třídou, jeho základní typ elementu je tato třída. Pokud ho následně nastavíte na pole jiné třídy, musí existovat převod mezi těmito dvěma třídami.

V následujícím příkladu students je student pole. Vzhledem k tomu, že mezi String a studentneexistuje žádný převod, poslední příkaz selže.

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  

Viz také