Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Egy tömbváltozó tárterületének újraelosztása.
Syntax
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
Részek
| Időszak | Definíció |
|---|---|
Preserve |
Opcionális. A módosító a meglévő tömb adatainak megőrzésére szolgál, ha csak az utolsó dimenzió méretét módosítja. |
name |
Szükséges. A tömbváltozó neve. Lásd: Deklarált elemnevek. |
boundlist |
Szükséges. Az újradefiniált tömb minden dimenziójának határainak listája. |
Megjegyzések
Az ReDim utasítással módosíthatja a már deklarált tömb egy vagy több dimenziójának méretét. Ha nagy tömböt használ, és már nincs szüksége annak egyes elemeire, ReDim a tömb méretének csökkentésével memóriát szabadíthat fel. Ha azonban a tömbnek több elemre van szüksége, ReDim felveheti őket.
Az ReDim utasítás csak tömbökhöz készült. Nem érvényes skalárokra (csak egyetlen értéket tartalmazó változókra), gyűjteményekre vagy struktúrákra. Vegye figyelembe, hogy ha egy változót típusnak Arraydeklarál, az ReDim utasítás nem rendelkezik elegendő típusinformációval az új tömb létrehozásához.
Csak eljárásszinten használható ReDim . Ezért a változó deklarációs környezetének eljárásnak kell lennie; Nem lehet forrásfájl, névtér, interfész, osztály, struktúra, modul vagy blokk. További információ: Deklarációs környezetek és alapértelmezett hozzáférési szintek.
Szabályok
Több változó. Több tömbváltozót átméretezhet ugyanabban a deklarációs utasításban, és megadhatja az
nameegyes változókhoz tartozó részeket.boundlistTöbb változót vessző választ el egymástól.Tömbhatárok. Minden bejegyzés
boundlistmegadhatja a dimenzió alsó és felső határát. Az alsó határ mindig 0 (nulla). A felső határ az adott dimenzió legmagasabb lehetséges indexértéke, nem pedig a dimenzió hossza (amely a felső határ plusz egy). Az egyes dimenziók indexe 0-tól a felső határértékig változhat.A benne lévő
boundlistdimenziók számának meg kell egyeznie a tömb eredeti dimenzióinak (rangjának) eredeti számával.Adattípusok. Az
ReDimutasítás nem módosíthatja a tömbváltozó vagy elemei adattípusát.Inicializálás. Az
ReDimutasítás nem tud új inicializálási értékeket megadni a tömbelemekhez.Rang. Az
ReDimutasítás nem módosíthatja a tömb rangját (a dimenziók számát).Átméretezés a Preserve használatával. Ha használja
Preserve, csak a tömb utolsó dimenzióját méretezheti át. Minden más dimenzióhoz meg kell adnia a meglévő tömb kötését.Ha például a tömb csak egy dimenzióval rendelkezik, átméretezheti ezt a dimenziót, és továbbra is megőrizheti a tömb összes tartalmát, mivel az utolsó és egyetlen dimenziót módosítja. Ha azonban a tömb két vagy több dimenzióval rendelkezik, csak az utolsó dimenzió méretét módosíthatja, ha használja
Preserve.Kellékek. Olyan tulajdonságon is használható
ReDim, amely egy értéktömböt tartalmaz.
Működés
Tömb cseréje.
ReDimfelszabadítja a meglévő tömböt, és létrehoz egy új tömböt ugyanazzal a ranggal. Az új tömb lecseréli a tömbváltozóban lévő kibocsátott tömböt.Inicializálás megőrzés nélkül. Ha nem adja meg
Preserve,ReDiminicializálja az új tömb elemeit az adattípus alapértelmezett értékével.Inicializálás a Preserve használatával. Ha megadja
Preserve, a Visual Basic átmásolja az elemeket a meglévő tömbből az új tömbbe.
Példa
Az alábbi példa a dinamikus tömb utolsó dimenziójának méretét növeli anélkül, hogy a tömbben meglévő adatok elvesznek, majd részleges adatvesztéssel csökkenti a méretet. Végül csökkenti a méretet az eredeti értékére, és újraincializálja az összes tömbelemet.
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
Az Dim utasítás létrehoz egy új tömböt három dimenzióval. Minden dimenzió 10-zel van deklarálva, így az egyes dimenziók tömbindexe 0 és 10 közötti lehet. A következő vitafórumban a három dimenziót rétegnek, sornak és oszlopnak nevezzük.
Az első ReDim létrehoz egy új tömböt, amely lecseréli a meglévő tömböt a változóban intArray.
ReDim az összes elemet átmásolja a meglévő tömbből az új tömbbe. Emellett további 10 oszlopot ad hozzá minden réteg minden sorának végéhez, és inicializálja az új oszlopok elemeit a 0 értékre (a tömb elemtípusának Integeralapértelmezett értéke).
A második ReDim új tömböt hoz létre, és az összes elférő elemet átmásolja. Azonban minden réteg minden sorának végétől öt oszlop veszik el. Ez nem jelent problémát, ha befejezte az oszlopok használatát. A nagy tömbök méretének csökkentése olyan memóriát szabadíthat fel, amelyekre már nincs szüksége.
A harmadik ReDim új tömböt hoz létre, és minden réteg minden sorának végéről eltávolít további öt oszlopot. Ezúttal nem másol semmilyen meglévő elemet. Ez az utasítás visszaállítja a tömböt az eredeti méretére. Mivel az utasítás nem tartalmazza a Preserve módosító értéket, az összes tömbelemet az eredeti alapértelmezett értékre állítja.
További példákért lásd a Tömbök című témakört.