none
Generic List ve Class , nerede yanlış yapıyorum acaba ? RRS feed

  • Soru

  • public class Deneme
            {
                public string d1 { get; set; }
                public string d2 { get; set; }
            }

    classım bu, butonun clickinde aşağıdaki kod yazıyor 

                int i=0;
                List<Deneme> d = new List<Deneme>();
                d[i].d1 = TextBox1.Text;
                d[i].d2 = TextBox2.Text;
                d.Add(d[i]);

    listin her elemanı için d1 ve d2 yi almak istiyorum, örneğin d[0] yazdığımda d1 ve d2 ayrı , d[1] yazdığımda d1 ve d2 ayrı alanlar eklemek istiyorum ve foreach ile d listinde döndüğümde d.d1 ve d.d2 verileri ulaşmak istiyorum , bunun için bu kodları denedim ama olmadı , 

    d[i].d1 = TextBox1.Text;

    kısmında

    Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

    hatası alıyorum sorun nedir acaba ?


    12 Ekim 2012 Cuma 00:18

Yanıtlar

  • Merhaba YazılımDevi;

    Dinamik den kastın nedir merak ediyorum. Eğer eklenecek öğeler herhangi bir kaynakdan (Veritabanı yada Herhangi bir dosyadan okunma sureti ile vb.) bu listeye eklenmeyecek ise her seferinde Code ile Class instance'ı alıp listeye eklemek zorundasın.

    List<KaynakBuraGele> aListesi = new List<KaynakBuraGele>();
    yapısında Listin countu artırman gerekmez aynı şekilde oluşturulan listeden eleman eksiltirkende.(Diziler ile karıştırıyorsun)

    List<T> bunu senin için otomatik olarak yapar.


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com


    12 Ekim 2012 Cuma 16:18

Tüm Yanıtlar

  •             List<Deneme> d = new List<Deneme>();
                Deneme den = new Deneme();
                den.d1 = "salman";
                den.d2 = "arslan";
                d.Add(den);
                MessageBox.Show(d[0].d2);

    12 Ekim 2012 Cuma 06:33
  • Merhaba YazılımDevi;

    Hatanın sebebi oluşturduğun DenemeList'ine (d) Deneme Classından instance alınmış bir öğe eklememen.

    d.Add(d[i]); yazdığın kod satırında d listesine d[i] 'inci itemını eklemeye çalışıyorsun halbuki d listesinde eleman bulunmuyor henüz yani 0.ıncı index boş.

    Örnek Olması amacı ile Form Kısmında yapılmış buna göz atabilirsin

            // Deneme Adında Class oluşturduk
            class Deneme
            {
                public string d1 { get; set; }
                public string d2 { get; set; }
            }
    
            // Global Olarak ulaşabileceğimiz bir Liste Oluşturduk (içine Deneme Class'ı öğeleri alabilen)
            List<Deneme> dlist = new List<Deneme>();
            
            // Formun Load Kısmında üstteki listeye iki eleman ekledik 
            private void Form3_Load(object sender, EventArgs e)
            {
                // Oluşturulan class dan instance alıyoruz
                Deneme den1 = new Deneme();
                // Propertylere gerekli Atamaları yapıyoruz
                den1.d1 = "den1 1";
                den1.d2 = "den1 2";
                // Instance alınan Class'ı listemize ekliyoruz
                dlist.Add(den1);
                // Başka bir instance alıp işlemi tekrarlıyoruz
                Deneme den2 = new Deneme();
                den2.d1 = "den2 3";
                den2.d2 = "den2 4";
                dlist.Add(den2);
                // Bilgi için kaç eleman eklendi sorguluyoruz
                MessageBox.Show("Deneme Listinine " + dlist.Count.ToString() + " eleman eklendi");
            }
    
            // Button yardımı ile Listedeki Elemanlar için her bir propertyi gösteriyoruz
            private void button1_Click(object sender, EventArgs e)
            {
                // dlist (DenemeListesi) deki her bir deneme Class'ı öğesi için)
                foreach (Deneme item in dlist)
                {
                    // Propertyleri MB yardımı ile gösteriyoruz
                    MessageBox.Show("d1 değeri: " + item.d1 + "\nd2 değeri: " + item.d2);
                }
            }


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com


    • Düzenleyen Exe.Cute 12 Ekim 2012 Cuma 10:19
    12 Ekim 2012 Cuma 10:15
  • Deneme den = new Deneme();
                den.d1 = "salman";
                den.d2 = "arslan";
     d.Add(den);

    peki bu yapıyı nasıl dinamik hale getirebilirim, yani butona her tıkladığımda bu liste bu elemanları eklemek istiyorum, butona her tıklaıdğımda bu listin countu 1 artsın, bunu nasıl yapabilirim

    12 Ekim 2012 Cuma 15:37
  • Merhaba YazılımDevi;

    Dinamik den kastın nedir merak ediyorum. Eğer eklenecek öğeler herhangi bir kaynakdan (Veritabanı yada Herhangi bir dosyadan okunma sureti ile vb.) bu listeye eklenmeyecek ise her seferinde Code ile Class instance'ı alıp listeye eklemek zorundasın.

    List<KaynakBuraGele> aListesi = new List<KaynakBuraGele>();
    yapısında Listin countu artırman gerekmez aynı şekilde oluşturulan listeden eleman eksiltirkende.(Diziler ile karıştırıyorsun)

    List<T> bunu senin için otomatik olarak yapar.


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com


    12 Ekim 2012 Cuma 16:18