Tweet

ArrayList Sınıfına Genel Bakış

Bugün ki konumuz da C# dilinde ArrayList sınıfına genel bir göz atacağız.
ArrayList'i bildiğimiz klasik dizi yapısından ayıran en önemli özelliği Run-Time (çalışma zamanı) da yeni nesne ekleme-çıkarma işlemi yapabilmemizdir. Bir diğer özelliği ise klasik dizi yapısının aksine aynı tür olmayan nesneleri bir arada tutabilmesidir. Klasik dizi yapısından ArrayListe'e terfi etmenin en belirgin artılarından bir tanesi de performans artışı gibi unsurlardır.
[...]
ArrayList şu şekilde oluşturulur.

CODE:
ArrayList liste = new ArrayList(35);


Not: ArrayList'ler de varsayılan kapasiteye göre 16 eleman tutabiliriz.
* ArrayList'in kapasitesini listeadi.Capacity şeklinde öğrenebilirsiniz.


Örneğimizde 35 elemanlı bir ArrayList oluşturulmuştur. İstisnai bir durum meydana gelirse yani kapasitenin artması gerekirse bu işlem otomatik olarak çalışma zamanında yani gereksinim duyulduğunda artırılır.

ArrayList içerisine aktardığımız her eleman bir obje olarak convert edilir. Dolayısı ile bu tür dizi içerisinde her türden nesneyi tutabiliriz. Dizi içerisinde ki nesnelere tekrar ulaşmak istediğimizde nesnenin orjinal türüne tekrar dönmek gerekeceği için bu aşamada bu objeler unboxing işlemine tabii tutulmak zorundadır. Çünkü nesne ArrayList'e eklenirken boxing işlemine tabii tutulmuştu.

Boxing işleminde değer tipinde ki bir değişkeni object türüne dönüştürüyoruz ve ArrayList'de bu şekilde saklıyoruz.

Örneğin;

CODE:
int i = 5;
object o = (object);


Objeye dönüştürülen değer tipi değişken listeye aktarılıyor. Tekrar bu değer değişkenini elde edebilmek için yani ArrayList' e aktardığımız nesneye ulaşabilmek için tam tersi unboxing yaparak obje türünde ki değişkeni değer tipi değişkene dönüştürüyoruz.

Örneğin;

CODE:
object o = 5;
int i = (int)o;


Burada integer türün de ki bir değişkeni object türüne çevirme işlemini ArrayList kendisi yapıyor dolayısı ile bilinçsiz dönüştürme söz konusu. Biz bu değişkene ulaşmak için hangi veri tipine dönüştüreceğimizi bilmek durumundayız. String bir değer tutan obje türü değişkeni integer a unboxing yaparsak (System.InvalidCastException: Specified cast is not valid) hatasını alabiliriz.

ArrayList'e ekleme yaparken Add metodunu kullanabiliriz. Aynı şekilde listeden bir eleman çıkaracağımız zaman da Remove metodunu kullanabiliriz.

Örneğin;

CODE:
using System.Collections;

class Program
{
static void Main()
{

ArrayList liste = new ArrayList();
liste.Add("Ali");
liste.Add("Veli");
liste.Add("Mehmet");
}
}


Şimdi listeye integer türden elemanlar ekleyelim ve bu elemanlara ulaşalım.

CODE:
using System;
using System.Collections;

class Program
{
static void Main()
{

ArrayList liste = new ArrayList();
liste.Add(41);
liste.Add(35);

Goster(liste);
}

static void Goster(ArrayList liste)
{
foreach (int i in liste)
{
Console.WriteLine(i);
}
}
}


Sonuç: 41 35 olacaktır.


Oguzz
oguz@thecoders.net
13 Kasim 2012 09:24

İlgili Olabilecek Makaleler


Yorumlar (0)




Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg