duyuruElektroArge.com'a Hoşgeldiniz. Üye Olmak İçin Tıklayın. duyuru





houseForum ana sayfa   iletişimİletişim   bilgiSSS  
kırmızı yeşil mavi
ekleKayıt  anahtarGiriş
evForum ana sayfa goE-Kütüphane goE-Ders goC#
 

  • Reklam

Ders 37 - Koleksiyonlar - HashTable

C Dili Dersleri - Okan Bilke

Ders 37 - Koleksiyonlar - HashTable

Mesajgönderen okanbilke » 10 Kas 2015 16:48

Bu Class "ArrayList" sınıfının iki sütünlu halidir diyebiliriz. Sadece değerler değil "key" değerleride sınıfa bildirilmelidir. Bu Class'ı kullanabilmeniz için öncelikle "System.Collections" kütüphanesini uygulamamıza dahil etmemiz gerekecektir.
using System.Collections;  // Ekleyiniz.
Hashtable Tablo = new Hashtable(); // Yavru Değişken

Add
Komut "ArrayList" sınıfında olduğu gibi yavru değişkene yeni elemanlar eklemek için kullanılır. Dikkat edin eklenecek olan elemanın "key" değeri de girilmelidir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
}

Eklenen bir eleman aşağıdaki şekilde key değeri kullanılarak kolayca çağırılabilir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
this.Text = Tablo["Adres"].ToString(); // Ankara
}

Belirtmekte fayda var aşağıdaki şekilde yapacağınız bir çağırma işlemi doğru sonuç vermeyecektir.
this.Text = Tablo[0].ToString();  // Hata

Clear
Nesneye eklenmiş olan tüm elemanları temizlemek için kullanılan methoddur. Temizleme işleminden sonra key değeri bulunamayacaktır.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
Tablo.Clear(); // Temizle
this.Text = Tablo["Adres"].ToString(); // Ankara
}

ContainsKey
Parametre ile belirtilen "key" değerinin "HashTable" nesnesine eklenmiş olup olmadığını bulur. "true" değerinin dönmesi o "key" değerinin nesneye eklenmiş olduğu anlamına gelir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
bool Durum = Tablo.ContainsKey("Adres"); // Var mı
if(Durum)
{
this.Text = Tablo["Adres"].ToString(); // Ankara Yazar
}
else
{
MessageBox.Show("Öyle bir eleman yok");
}
}

ContainsValue
Bu method parametre ile girilen değerin (key değil, ikinci sütun) Sınıfa daha önceden ekli olup olmadığını kontrol eder. "true" değerinin dönmesi içeriğin bir "key" adıyla beraber listeye eklenmiş olduğunu belirtir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
bool Durum = Tablo.ContainsKey("Ankara");
if(Durum)
{
this.Text = "Bu Eleman Listeye Ekli";
}
else
{
MessageBox.Show("Öyle bir eleman yok");
}
}

Dikkat edin arama ikinci girilen değerlere göre yapılacaktır.

Count
Listede yer alan eleman sayısını döndüren özelliktir. Her "Add" bu özelliği bir artıracaktır.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
int KacAdet = Tablo.Count; // Kaç kayıt var
this.Text = KacAdet.ToString(); // 4 Yazar
}

Keys
Nesnedeki tüm "key" değerlerini elde etmek için kullanılan özelliğidir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
foreach(String Eleman in Tablo.Keys)
{
MessageBox.Show(Eleman);
}
}

Şayet sadece key değil, içerikleride yazdıracaksanız, o zaman aşağıdaki şekilde bir kodlama kullanmalısınız.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
foreach(String Eleman in Tablo.Keys)
{
MessageBox.Show(Eleman + "=" + Tablo[Eleman].ToString());
}
}

Dilerseniz aşağıdaki şekilde bir kod bloğu kullanarak da key değerlerine erişebilirsiniz.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
ICollection Degerler = Tablo.Keys;
IEnumerator DiziOku = Degerler.GetEnumerator();
while(DiziOku.MoveNext())
{
MessageBox.Show(DiziOku.Current.ToString());
}
}

Şayet hem keyler hemde value lara erişim sağlanması gerekiyorsa o zaman kodunuzu aşağıdaki şekilde belirlemelisiniz. Dikkat edin bu sefer her koleksiyondan iki tane tanımlamamız gerekti. Kayıt sayısı key ve value da aynı olduğu için döngü problem çıkarmayacaktır.
private void button1_Click(object sender, EventArgs e)
{
string Sonuc = null;
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
ICollection Keyler = Tablo.Keys;
ICollection Degerler = Tablo.Values;
IEnumerator DiziOku = Keyler.GetEnumerator();
IEnumerator DiziOku2 = Degerler.GetEnumerator();
while(DiziOku.MoveNext() && DiziOku2.MoveNext())
{
Sonuc = DiziOku.Current.ToString() + "=" + DiziOku2.Current.ToString();
MessageBox.Show(Sonuc);
}
}

Remove
Parametre ile belirtilen "key" elemanını listeden silmek için kullanılır.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
Tablo.Remove("Ad"); // Sil
this.Text = Tablo["Ad"].ToString(); // Hata
}

Values
Nesneye ait tüm eleman içeriklerini yazdırmak için kullanılan özelliktir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
foreach(object Eleman in Tablo.Values)
{
MessageBox.Show(Eleman.ToString());
}
}

GetType
Değişkene ait tip değerini elde etmek için kullanılan komuttur. "Type" tipli bir değişkene aktarılmak zorundadır. Aşağıdaki kod bu komutu örneklemektedir.
private void button1_Click(object sender, EventArgs e)
{
Hashtable Tablo = new Hashtable();
Tablo.Add("Ad", "Okan Bilke");
Tablo.Add("Adres", "Ankara");
Tablo.Add("Meslek", "Mühendis");
Tablo.Add("Cinsiyet", true);
//
Type tip;
tip = Tablo.GetType();
this.Text = tip.FullName;
}

HashTable Parametresi Olarak Dictionary Kullanmak
Aşağıdaki örnek uygulamada Dictionary sınıf değişkeni HashTable sınıf değişkenine parametre olarak yollanarak tüm değerleri elde edilebilmektedir.
private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, string> Sozluk = new Dictionary<string, string>();
Sozluk.Add("Monday", "Pazartesi");
Sozluk.Add("Tuesday", "Salı");
Sozluk.Add("Wednesday", "Çarşamba");
Sozluk.Add("Thursday", "Perşembe");
Sozluk.Add("Friday", "Cuma");
Sozluk.Add("Saturday", "Cumartesi");
Sozluk.Add("Sunday", "Pazar");
Hashtable tablo = new Hashtable(Sozluk);
this.Text = tablo["Wednesday"].ToString(); // Çarşamba
}
okanbilke@gmail.com
Kullanıcı avatarı
okanbilke
Site Kurucusu
Site Kurucusu
 
Mesajlar: 721
Beğendiklerim: 0 mesaj
Beğenilenlerim: 0 mesaj
Kayıt: 15 Mar 2013 13:09
Konum: Ankara

Reklam

Dön C#

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir


  • Reklam
cron