Tömbkonvertálások (Visual Basic)
A tömbtípusokat átalakíthatja másik tömbtípussá, feltéve, hogy megfelel az alábbi feltételeknek:
Egyenlő rang. A két tömb sorainak azonosnak kell lenniük, vagyis azonos számú dimenzióval kell rendelkezniük. A megfelelő méretek hosszának azonban nem kell megegyeznie.
Elem adattípusa. Mindkét tömb elemeinek adattípusainak referenciatípusoknak kell lenniük. Tömböt
Long
nem konvertálhatInteger
tömbté, vagy akár tömbötObject
sem, mert legalább egy értéktípusról van szó. További információ: Értéktípusok és referenciatípusok.Átalakíthatóság. A két tömb elemtípusai között szélesítésnek vagy szűkítésnek is lehetségesnek kell lennie. Ennek a követelménynek a sikertelensége például egy tömb és egy
String
osztály tömbje System.Attributeközötti konvertálási kísérlet. Ez a két típus nincs közös bennük, és közöttük semmilyen átalakítás nem létezik.
Az egyik tömbtípus egy másikra való konvertálása attól függően szélesedik vagy szűkül, hogy a megfelelő elemek konvertálása szélesedik vagy szűkül. További információkért lásd a konverziók kibővítését és szűkítését ismertető témakört.
Átalakítás objektumtömbre
Ha egy tömböt Object
inicializálás nélkül deklarál, az Object
elem típusa mindaddig megmarad, amíg nem lesz inicializálva. Ha egy adott osztály tömbjeként állítja be, az az adott osztály típusát veszi figyelembe. A mögöttes típus azonban továbbra is Object
fennáll, és később beállíthatja egy nem kapcsolódó osztály egy másik tömbjeként. Mivel az összes osztály innen Object
származik, a tömb elemtípusát bármely osztályról bármely más osztályra módosíthatja.
Az alábbi példában nem létezik átalakítás a típusok student
és String
a , de mindkettőből Object
származik, így az összes hozzárendelés érvényes.
' 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.
Tömb mögöttes típusa
Ha eredetileg egy adott osztályt tartalmazó tömböt deklarál, annak mögöttes elemtípusa az adott osztály. Ha ezt követően egy másik osztály tömbjeként állítja be, a két osztály között konverziónak kell lennie.
Az alábbi példában students
egy student
tömb látható. Mivel nem létezik átalakítás az és student
közöttString
, az utolsó utasítás meghiúsul.
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