İçindekiler
C# Çok Boyutlu Diziler (Multidimensional Arrays)
Bu yazımızda sizlere düzenli ve düzensiz diziler hakkında bilgiler vereceğiz.
- İki türde çok boyutlu dizi bulunur. Her boyutta eşit miktarda elemanın olduğu düzenli diziler (matrisler) ve her boyutta farklı sayıda eleman barındıran düzensiz diziler (jagged arrays). Aslında düzensiz dizilerin elemanlarıda dizi olan dizilerdir.
- Çok boyutlu dizi tanımlaması yaparken “[ , , ]” şeklinde yazılır.
Düzenli Diziler (matrisler)
1 | int[,] dizi2d = new int[3, 4]; // üç satır ve dört sütundan oluşan dizimizi böyle tanımladık |
Şeklinde tanımlanan bir 3×4’lik dizinin elemanları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | int[,] dizi2d = new int[3, 4]; dizi2d[0, 0] = 1; dizi2d[0, 1] = 2; dizi2d[0, 2] = 3; dizi2d[0, 3] = 4; dizi2d[1, 0] = 5; dizi2d[1, 1] = 6; dizi2d[1, 2] = 7; dizi2d[1, 3] = 8; dizi2d[2, 0] = 9; dizi2d[2, 1] = 10; dizi2d[2, 2] = 11; dizi2d[2, 3] = 12; for (int i = 0; i < dizi2d.GetLength(0); i++) { for (int j = 0; j < dizi2d.GetLength(1); j++) { Console.Write(dizi2d[i, j] + "\t"); } Console.WriteLine(); } |
Ekran Çıktısı
1 2 3 | 1 2 3 4 5 6 7 8 9 10 11 12 |
Düzensiz Diziler(Jagged Arrays)
Dizilerin elamanlarıda da farklı diziler olabilme özelliğine sahiptir. Bu durumda tanımlanan dizinin birbirinden farklı boyutlarda alt elemanları olabilir. Bu gibi yapılara düzensiz diziler ismi verilir.
- Matris dizilerinde gördüğünüz üzere her bir satırdaki eleman eşit sayıda kolon elemanı almaktaydı. Düzensiz dizilerde ise bu düzen değişmekte ve her bir satırdaki elemana farklı kolon tanımlaması yapılmaktadır.
1 2 3 4 | int[][] dizi = new int[3][]; dizi[0] = new int[] { 1, 2, 3 }; dizi[1] = new int[] { 4, 5, 6, 7 }; dizi[2] = new int[] { 8, 9 }; |
Düzensiz dizimiz yukarıda ki gibi tanımlanmaktadır.
Düzensiz dizilerde eleman sayısı sabit olmadığından dolayı dizi elemanlarını taramak için Array sınıfının metotları ve ya özellikleri kullanılır. Length
özelliği bir dizinin eleman sayısını verir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int[][] dizi = new int[3][]; dizi[0] = new int[] { 1, 2, 3 }; dizi[1] = new int[] { 4, 5, 6, 7 }; dizi[2] = new int[] { 8, 9 }; int i = 0; while(i<dizi.Length) { int t = 0; while(t<dizi[i].Length) { Console.Write(dizi[i][t]+"\t"); t++; } Console.WriteLine(); i++; } Console.ReadKey(); } Console.WriteLine(); |
Ekran Çıktısı
1 2 3 | 1 2 3 4 5 6 7 8 9 |
System.Array Sınıfı
Dizi nesneleri System.Array sınıfından türemişlerdir. Dolayısıyla bu sınıfın bazı özellik ve metotlarını bünyelerinde barındırırlar.
Özellikleri şunlardır
IsFixedSize
Dizinin elaman sayısının sabit olup olmadığını verir.IsReadOnly
Dizinin elamanlarının sadece okunup okunamadığını verir.Length
Dizideki elaman sayısını verir.Rank
Dizinin boyutunu verir.
Metotlar
BinarSearch
Tek boyutlu dizide binary search algoritmasına göre arama yapar.Clear
Dizinin elemanlarını varsayılan değere çeker.Clone
Dizinin bit bit kopyasını çıkarır.Copy
Dizinin bir bölümünü başka bir diziye kopyalar.CopyTo
Bir dizinin belirlenen bir kısmını başka bir diziye kopyalar.GetLength
Dizideki eleman sayısını verir.GetValue
Dizideki ilgili eleman değerini verir.IndexOf
Dizi içindeki bir değerin ilk görüldüğü indeksi verir.Reverse
Diziyi tersine çevirir.SetValue
Bir dizinin bir elemanına değer atar.Sort
Bir boyutlu dizilerde sıralama yapar.CreateInstance
Yeni bir dizi nesnesi oluşturur.
Özelliklerinin Kullanımı
IsFixedSize
1 2 | Array isimler = new[] { "Emre", "Mert", "Oktay", "Ömer", "Ali", "Mustafa" }; Console.WriteLine(isimler.IsFixedSize); // sabit olduğu için true çıktısını yazdıracaktır. |
Ekran Çıktısı
1 | True |
IsReadOnly
1 2 | Array isimler = new[] { "Emre", "Mert", "Oktay", "Ömer", "Ali", "Mustafa" }; Console.WriteLine(isimler.IsReadOnly); // Dizinin elamanlarının sadece okunup okunamadığını verir |
Ekran Çıktısı
1 | False |
Length
1 2 | Array isimler = new[] { "Emre", "Mert", "Oktay", "Ömer", "Ali", "Mustafa" }; Console.WriteLine(isimler.Length); // Dizinin elamanlarının sayısını verir |
Ekran Çıktısı
1 | 6 |
Rank
1 2 | Array isimler = new[] { "Emre", "Mert", "Oktay", "Ömer", "Ali", "Mustafa" }; Console.WriteLine(isimler.Rank); // Dizinin boyutunu verir |
Ekran Çıktısı
1 | 1 |
C# Diziler konumuzda buradan göz atabilirsiniz.
Dilerseniz JAVA ile çok boyutlu diziler yazımıza bakabilirsiniz.
Bu çok boyutlu dizileri sizin deyiminiz ile Multidimensional Arrays, anlamadığım ve hep zorlandığım bir kavramdı. Ta ki sizin yazınızı “Ömer Faruk” isimli arkadaşımın paylaşımından keşfedene kadar. Beni bu cahillikten kurtardığınız için size sonsuz teşekkürler Mustafa Bey. Her şey gönlünüzce olsun…
Sitenizi yeni kesfettim icerikleriniz işlerimi kolaylastırdı Eline sağlık Basarılarının devamını dilerim.