Megosztás a következőn keresztül:


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 Integer nem konvertálhat Long tömbté, vagy akár tömböt Object 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. Egy példa, ami nem felel meg ennek a követelménynek, egy kísérlet a String tömb átalakítására egy System.Attribute-ből származtatott osztály tömbjévé. 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. Azonban a mögöttes típus továbbra is Object, és később átállíthatja egy másik, nem kapcsolódó osztály tömbjére. Mivel az összes osztály innen Objectszá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 nincs átalakítás a student és String típusok között, de mindkettő a Object típusból származik, így minden 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 a String és student között, az utolsó utasítás sikertelen.

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  

Lásd még