C# ile gelen güzel bir olay olan jagged diziler… Bunu onceden C kullanan vatandaşlar pointer kullanarak yapıyordu. Bu şekilde malloc()’la yer isteyip sonra onu dinamik oluşturup siliyorduk. Jagged (pürüzlü,düzensiz) dizilerde ise sizin istediğiniz kadar temel eleman oluştrup bu elemanların herbirinin altdizisi ihtiyaca göre oluşturulur.
mesela diziyi tablo halinde ifade edecek olursak
şöyle bir yapıda dizimiz olabilir.
Gördüğümüz gibi dizinin alt eleman sayısı farklılık gösterebiliyor..net listview datagrid vs gibi bileşenlerdeki ekleme mantığıyla hareket edeceğiz.Şimdi mesela ilkonce itemleri (dizinin [i][0]) kısmını ayarlayacağız.Sonra da o itemlere (dizi elemanlarına ait ) alt itemleri oluşturup ekleriz.
Ben bunu en iyi şekilde nasıl gösterceğimizi düşünürken listview’e rastgele oluşturulmuş verileri
rastgele boyutlu dizilere nasıl atacğımı göstereceğim.
Şimdi dizinin [i][0] . elemanları listviewde item gibi olacak sonra listview e diğer kayıtlar subitemler olarak gelcek.Bu şekilde içiçe for dongusuyle yapacağız.Matrisler gibi düşünürsek daha kolay anlaşılır.
Şimdi jagged dizi nasıl tanımlanır?
string[][] kod=new kod[10][];
şeklinde olur.Altdizileri ise tek tek tekrar dizi tanımlıyomuşuz gibi tekrar tanmlayacağız.Mesela
dizinin 1. elemanı 2. elemanı … hepsi ayrı ayrı birer dizi olacaktır.
onu da şöyle gösterelim–>
kod[i] = new string[10]; tanımlarız. Fakat bunun düzensizliği nerde kaldı?
o zaman şöyle soleyelim.
tut=r.Next(1,20);
kod[i] = new string[tut];
rastgele değerlerde boyutlu bir dizi.İşte şimdi jagged oldu:)
Sonra buna random olarak rastgele değerler verip dolduralım.
Bu arada cascade nedir onu da soyleyelim
(char)65 dersek ‘a’ olur.
onun koyacağımız tip belirteçleri cascade oluyor.Bununla o değeri bellekteki tutulma şekli belirlenir. Rastgele değerler için şöyle yaptık.
String[,] cellValues = { { "1", "2", "3" }, { "a", "b", "c" }, { "m", "n", "o" } }; HtmlTableRow row = new HtmlTableRow(); HtmlTableCell cell = new HtmlTableCell(); cell.ColSpan = 3; cell.InnerText = "KAYIT 1"; row.Cells.Add(cell); tableContent.Rows.Add(row); for (int i = 0; i < cellValues.GetLength(0); i++) { row = new HtmlTableRow(); for (int j = 0; j < cellValues.GetLength(1); j++) { cell = new HtmlTableCell(); cell.InnerText = cellValues[i, j]; row.Cells.Add(cell); } tableContent.Rows.Add(row); } row = new HtmlTableRow(); cell = new HtmlTableCell(); HtmlInputButton input = new HtmlInputButton(); input.ID = "Button1"; input.Value = "button"; cell.ColSpan = 3; cell.Controls.Add(input); row.Cells.Add(cell); tableContent.Rows.Add(row);