Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Typ pole můžete převést na jiný typ pole za předpokladu, že splňujete následující podmínky:
Stejná hodnost. 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. Nelze převést
Integerpole naLongpole ani dokonce naObjectpole, protože je zapojen alespoň jeden hodnotový typ. Další informace naleznete v tématu Typy hodnot a odkazové typy.Směnitelnost. Převod, buď zužující nebo rozšiřující, musí být možný mezi typy prvků dvou polí. Příkladem selhání tohoto požadavku je pokus o převod mezi
Stringpolem 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ý je rozšiřující nebo zúžující podle toho, zda je převod příslušných prvků rozšiřující nebo zúžující. 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