Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Ahmet Faruk Nacaroğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 10.2.2003
Okunma Sayısı : 187259
Yorum Sayısı : 17     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C#'da ArrayList Sınıfının Kullanımı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Programların çoğunda birden fazla aynı tipte  değişkenlere ihtiyaç duyarız. Bu sorunun çözümü olarak birçok dilde kullanılan veri yapıları ,dizilerdir. Bildiğimiz klasik dizilerin programlama tekniklerine getirdikleri kolaylıkların dışında birtakım kısıtlamaları da vardır. Bu makalede klasik dizilerde sık sık karşılaştığımız çeşitli sorunları ve bu sorunları nasıl çözebileceğimizi inceleyeceğiz.

.NET platformunun sınıf kitaplıklarında bulunan ve programcıların işlerini çok kolaylaştıran ArrayList sınıfı ile klasik dizilerde karşılaştığımız sorunları nasıl çözeceğimizi göreceğiz.

Klasik dizilerle çalışırken karşılaşabileceğimiz temel sorunları şu şekilde sıralamak mümkündür:

  • Dizilerin sınırları sabittir.
  • Dizilerin tüm elemanları aynı türden olmalıdır.
  • Kullanmadığımız dizi elemanlarından dolayı bellek alanları gereksiz yere işgal edilmektedir.
Örneğin sayısını bilemediğimiz bir dizinin eleman sayısını 500 olarak belirlediğimizi varsayalım. Çalışma zamanında dizimizin sadece 10 elamanını kullandığımız durumda diğer 490 elemanlık bellek alanı boş olarak kalır. Öte yandan dizimizde tutmak istediğimiz değişkenlerin sayısı 501 bir olduğu bir durumda "IndexOutOfRangeException" istisnai durumu ortaya çıkar ve program bu hatadan dolayı sonlanır.

Mesela aşağıdaki kodu derlemeye çalışalım:

using System;


class CshaprNedirCom
{
    static void Main(string[] args)
    { 
        int[] intDizi= new int[10];

       try
       {
           intDizi[20]=5;
       }

       catch( Exception e)
       {
          Console.WriteLine(e.GetType());
       }

       Console.ReadLine();

    }

}

Yukarıdaki programda intDizi 'mizi 10 eleman alacak şekilde tanımlamamıza rağmen bu dizinin 20. elemanına ulaşıp ona birşeyler atamaya çalıştık. Bu durumda programımız çalışırken hata verdi. Çünkü dizinin sınırları bellidir ve bu sınırların dışına çıkamıyoruz. Eleman sayısı ihtiyacımıza göre değişen bir veri yapısı olması gerçekten hoş olmaz mıydı? Evet C#'da böyle bir dizi yapımız var. Bunun ismi ArrayList'tir.

ArrayList sınırları dinamik olarak değişebilen diziler olarak tanımlanır. Bu veri yapısı .NET sınıf kütüphanesinin System.Collections isim alanında bulunur. İsterseniz ArrayList'i nasıl kullanacağımızı bir örnekle inceleyelim:

using System;
using System.Collections;  // ArrayList sınıfnı kullanmak için
                                    // System.Collection isimalanını eklemeliyiz..

class CshaprNedirCom
{
       static void Main(string[] args)
       {
              ArrayList aList= new ArrayList();        // aList isimli ArrayList nesnesi oluşturalım.

              // aList nesnemize sırası ile 5, 8, 1, 17 ve 20 değerlerini
              // Add metodu ile ekleyelim.
              aList.Add(5);
              aList.Add(8);
              aList.Add(1);
              aList.Add(17);
              aList.Add(20);

              // aList'in elemanlarını ekrana yazdıryoruz:
              Console.WriteLine("\t aList'in elemanları:");
              foreach(int eleman in aList)
              Console.WriteLine(eleman);

              // aList dizimizden 8 ve 20 değerlerini çıkartalım:
              aList.Remove(8);
              aList.Remove(20);

              // aList dizimize 66 ve 4 değerlerini ekleyelim:
              aList.Add(66);
              aList.Add(4);

              Console.WriteLine("\n\t aList dizisinden 8 ve 20\' çıkartıp, 66 ve 4 ekledik:");
              foreach(int eleman in aList)
                   Console.WriteLine(eleman);



              Console.ReadLine();

       }
}


Yukarıdaki örneğimizde öncelikle ArrayList sınıfını kullanmak için NET sınıf kütüphanesinin System.Collections isim alanınını kullanacağımızı using System.Collections; ile bildiriyoruz. Main fonksiyonumuzun içindeki ilk satırda, ArrayList aList= new ArrayList() , aList ismini verdiğimiz ArrayList sınıfından bir nesne oluşturuyoruz. aList nesnemizi oluşturduğunuz satırdan sonraki beş satırda ArrayList sınıfının Add() metodu ile aList adlı dizimize elemanları ekliyoruz.

Daha sonra aList diziminizin elemanlarını ForEach döngüsü ile tek tek ekrana yazdıyoruz. ArrayList sınıfındaki bir nesnenin elemanlarını tek tek silmek için Remove() metodunu kullanırız. Remove() metodu ile istediğimiz elemanı diziden atabiliriz. Biz de 8 ve 20 elemanlarını diziden attık. Son olarak dizimize 66 ve 20 elemanlarını ekleyip dizinin son halini ekrana yazdırdık.

C# dilinde normal diziler bildiğiniz gibi sadece aynı tipten verileri tutar. Ama ArrayList sınıfına ait dizilerimiz her türlü nesneyi aynı dizi içinde tutabilir. Yani aynı dizide int, float, ve string tiplerindeki değişkenleri depolama şansımız var. Mesela aşağıdaki kod C# dili kuralları çerçevesinde geçerli bir koddur:

          ArrayList karmaList= new ArrayList(); // karmaList isimli ArrayList nesnesi oluşturalım.

          karmaList.Add("Ahmet");
          karmaList.Add(12);
          karmaList.Add(true);
          karmaList.Add(32.4f);
          karmaList.Add('c');

Bu kod ile karmaList isimli ArrayList nesnemizin içinde string, int, bool, float ve char tiplerinden oluşan verileri aynı anda saklarız. ArrayList sınıfının bize sunduğu diğer bir güzel özellik ise tek bir komut ile ArrayList dizimizin içerisindeki elemanları ters çevirebilmemizdir. Ters çevirme işlemi için Reverse() metodu kullanılır. İsterseniz Reverse() metodunu ve ArrayList'lerde nasıl birden farklı türdeki elemanları kullanacağımızı bir örnekle inceleyelim:

using System;
using System.Collections;  // ArrayList sınıfnı kullanmak için
                                    // System.Collection isimalanını eklemeliyiz..

class CshaprNedirCom
{
        static void Main(string[] args)
        {
                // karmaList isimli ArrayList nesnesi oluşturalım.
                ArrayList karmaList= new ArrayList();        

                // karmaList'e değişik tipte elemanlar ekliyoruz.
                karmaList.Add("Ali");
                karmaList.Add(23);
                karmaList.Add(false);
                karmaList.Add(52.8d);
                karmaList.Add('r');

                // karmaList'in elemanlarını ekrana yazdırıyoruz:
                Console.WriteLine("\t karmaList'in elemanları:");
                foreach(object eleman in karmaList)
                        Console.WriteLine(eleman);

                karmaList.Reverse();         // karmaList'imizi ters çeviriyoruz.

                Console.WriteLine("\n ---> karmaList'in elemanları ve türleri <---");
                foreach(object eleman in karmaList)
                Console.WriteLine("Türü: {0,15} değeri: {1,7}",eleman.GetType(), eleman);

                Console.ReadLine();
        }
}

Yukarıdaki programda karmaList isimli ArrayList sınfından bir nesne oluşturduktan sonra onu değişik türlerden veriler ile doldurduk. Bu dizinin elemanlarını sıra ile foreach döngüsü yardımıyla ekrana yazdırdık. karmaList.Reverse() satırında ise dizimizi ters çevirdik. Son işimizde ise karmaList dizisinin elemanlarını ekrana tek tek yazdırırken aynı zamanda eleman.GetType( ) her elemanın türünü bulup yazdık.

Makalemizi ArrayList sınıfının temel metodlarının tablosunu vererek bitirmek isterim. Bu tablodaki metodların işimize yaracağı kanaatindeyim.

Add Bir nesneyi ArrayList'in sonuna ekler.
BinarySearch Sıralanmış bir ArrayList içinde bir nesneyi Binary search algoritması kullanarak arar.
Clear ArrayList'in tüm elemanlarını siler. Sıfırlar.
Contains Herhangi bir nesnenin ArrayList'in elemanı olup olmadığını kontrol eder.
Insert Dizinin sonuna değilde istediğimiz bir yerine indeksini belirterek eklememizi sağlar.
Remove Herhangi bir elemanı diziden siler.
Reverse Diziyi ters çevirir.
Sort ArrayList'i sıralar.
Makale:
C#'da ArrayList Sınıfının Kullanımı C#, Visual C# ve .NET Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
OCA
17
2014
emeğine sağlık hocam çok faydalı oldu
MAY
14
2011
Tesekkurler kaliteli bir yazi. Cok faydasi oldu.
MAY
4
2010
elinize sağlık, güzel anlatmışsınız
ŞUB
20
2010
yalın ve öz anlatım olmuş teşekkürler..
NİS
1
2008
yeni başlayanlar için güzel bir anlatım tebrikler
Sayfalar : 1 2 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor