Aracılığıyla paylaş


ReDim Deyimi (Visual Basic)

Bir dizi değişkeni için depolama alanını yeniden ayırır.

Sözdizimi

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]  

Parça

Süre Tanım
Preserve isteğe bağlı. Yalnızca son boyutun boyutunu değiştirdiğinizde var olan dizideki verileri korumak için kullanılan değiştirici.
name Gerekli. Dizi değişkeninin adı. Bkz. Bildirilen Öğe Adları.
boundlist Gerekli. Yeniden tanımlı dizinin her boyutunun sınırlarının listesi.

Açıklamalar

Deyimini ReDim , önceden bildirilmiş bir dizinin bir veya daha fazla boyutunu değiştirmek için kullanabilirsiniz. Büyük bir diziniz varsa ve artık bazı öğelerine ihtiyacınız yoksa, ReDim dizi boyutunu azaltarak belleği boşaltabilirsiniz. Öte yandan, diziniz daha fazla öğeye ihtiyaç duyuyorsa bunları ReDim ekleyebilir.

ReDim deyimi yalnızca diziler için tasarlanmıştır. Skalerler (yalnızca tek bir değer içeren değişkenler), koleksiyonlar veya yapılar için geçerli değildir. Türünde bir değişken Arraybildirirseniz deyiminin ReDim yeni diziyi oluşturmak için yeterli tür bilgilerine sahip olmadığını unutmayın.

Yalnızca yordam düzeyinde kullanabilirsiniz ReDim . Bu nedenle, değişkenin bildirim bağlamı bir yordam olmalıdır; kaynak dosya, ad alanı, arabirim, sınıf, yapı, modül veya blok olamaz. Daha fazla bilgi için bkz . Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri.

Kurallar

  • Birden Çok Değişken. Aynı bildirim deyiminde birkaç dizi değişkenini yeniden boyutlandırabilir ve her değişken için ve name bölümlerini belirtebilirsinizboundlist. Birden çok değişken virgülle ayrılır.

  • Dizi Sınırları. içindeki boundlist her girdi, bu boyutun alt ve üst sınırlarını belirtebilir. Alt sınır her zaman 0 'dır (sıfır). Üst sınır, boyutun uzunluğu (üst sınır artı bir) değil, bu boyut için mümkün olan en yüksek dizin değeridir. Her boyutun dizini 0'dan üst sınır değerine kadar değişebilir.

    içindeki boundlist boyut sayısı, dizinin özgün boyut sayısıyla (derece) eşleşmelidir.

  • Veri Türleri. deyimi, ReDim bir dizi değişkeninin veya öğelerinin veri türünü değiştiremez.

  • İlklendirme. deyimi, ReDim dizi öğeleri için yeni başlatma değerleri sağlayamaz.

  • Rütbe. deyimi, ReDim dizinin derecesini (boyut sayısı) değiştiremez.

  • Preserve ile yeniden boyutlandırma. kullanıyorsanız Preserve, dizinin yalnızca son boyutunu yeniden boyutlandırabilirsiniz. Diğer tüm boyutlar için var olan dizinin bağlı olduğunu belirtmeniz gerekir.

    Örneğin, dizinizin yalnızca bir boyutu varsa, son ve tek boyutu değiştirdiğiniz için bu boyutu yeniden boyutlandırabilir ve yine de dizinin tüm içeriğini koruyabilirsiniz. Ancak, dizinizin iki veya daha fazla boyutu varsa, kullanıyorsanız Preserveyalnızca son boyutun boyutunu değiştirebilirsiniz.

  • Özellikler. Bir değer dizisini barındıran bir özellikte kullanabilirsiniz ReDim .

Davranış

  • Dizi Değiştirme. ReDim mevcut diziyi serbest bırakır ve aynı dereceye sahip yeni bir dizi oluşturur. Yeni dizi, dizi değişkenindeki serbest bırakılmış dizinin yerini alır.

  • Preserve olmadan başlatma. belirtmezseniz Preserve, ReDim veri türü için varsayılan değeri kullanarak yeni dizinin öğelerini başlatır.

  • Preserve ile başlatma. belirtirseniz Preserve, Visual Basic öğeleri var olan diziden yeni diziye kopyalar.

Örnek

Aşağıdaki örnek, dizideki mevcut verileri kaybetmeden dinamik dizinin son boyutunun boyutunu artırır ve ardından kısmi veri kaybıyla boyutu azaltır. Son olarak, boyutu özgün değerine geri küçültür ve tüm dizi öğelerini yeniden başlatıyor.

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

deyimi, Dim üç boyutlu yeni bir dizi oluşturur. Her boyut 10 sınırıyla bildirilir, bu nedenle her boyutun dizi dizini 0 ile 10 arasında değişebilir. Aşağıdaki tartışmada, üç boyut katman, satır ve sütun olarak adlandırılır.

İlki ReDim , değişkenindeki intArraymevcut dizinin yerini alan yeni bir dizi oluşturur. ReDim varolan dizideki tüm öğeleri yeni diziye kopyalar. Ayrıca her katmandaki her satırın sonuna 10 sütun daha ekler ve bu yeni sütunlardaki öğeleri 0'a (dizinin öğe türü olan varsayılan değeri Integer) başlatır.

İkincisi ReDim başka bir yeni dizi oluşturur ve uygun olan tüm öğeleri kopyalar. Ancak, her katmandaki her satırın sonundan beş sütun kaybolur. Bu sütunları kullanmayı bitirdiyseniz bu sorun olmaz. Büyük bir dizinin boyutunu küçültmek artık ihtiyacınız olmayan belleği boşaltabilir.

Üçüncü ReDim , başka bir yeni dizi oluşturur ve her katmandaki her satırın sonundan beş sütun daha kaldırır. Bu kez var olan öğeleri kopyalamaz. Bu deyim diziyi özgün boyutuna döndürür. deyimi değiştiriciyi Preserve içermediğinden, tüm dizi öğelerini özgün varsayılan değerlerine ayarlar.

Ek örnekler için bkz . Diziler.

Ayrıca bkz.