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 Long nem konvertálhat Integer 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. 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 Objectfenná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 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 nem létezik átalakítás a típusok student és Stringa , de mindkettőből Objectszá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 studentkö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  

Lásd még