C# Dizi Sınıfı Metotlarına geçmeden önce dizilerin nasıl kullanıldığına veya diziler ile ilgili örneklere göz atmak isterseniz önceki yazılarımda yazdığım C#’da diziler konusuna göz atabilirsiniz. Şimdi C# Dizi Sınıfı Metotlarımıza geçelim. Diziler için bir çok metot sunulur ve bu metotlar işlerimizi kolaylaştırır.
BinarSearch
BinarySearch metodunun iki önemli kullanım biçimi vardır.
1 | BinarySearch(Array dizi, object nesne); |
Bu yapı, dizi içerisinde nesneyi arar; eğer aranan nesne bulunursa bulunduğu index ile geri dönülür. Eğer bulunamazsa negatif bir sayıyla geri dönüş yapar.
1 | BinarySearch(Array dizi, int baslangic, int uzunluk, object nesne); |
1 2 3 4 5 6 7 8 9 | string[] dizi = { "Emre", "Mert", "Ali", "Oktay", " Ömer", "Osman", "Mustafa" }; Console.Write("=> Aranacak İsmi Giriniz ="); string isim = Console.ReadLine(); Array.Sort(dizi); int indeks = Array.BinarySearch(dizi, isim); if (indeks < 0) Console.WriteLine("=> Aranan isim dizide bulunamadı! "); else Console.WriteLine("=> Aranan isim dizinin {0}. elemanında bulundu...", indeks); |
Ekran Çıktısı
1 2 | => Aranacak İsmi Giriniz =Oktay => Aranan isim dizinin 5. elemanında bulundu... |
Clear
Clear Kullanmak dizimizde boşaltma işlemi yapmak için kullanılır. Clear(dizi, index, length) olarak girilecek olan 3 adet parametre verilerine göre işlem yapar.
1 2 3 4 5 6 7 8 | int[] numaralar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Array.Clear(numaralar, 1, 5); //birinci index ile beşinci index dahil aralardaki sayılara boşaltma işlemi uyğulandı. foreach (var numarası in numaralar) { Console.WriteLine(numarası); } Console.ReadLine(); |
Ekran çıktısı
1 2 3 4 5 6 7 8 9 10 11 | işlem sonrası dizi hali İşlem öncesi dizi hali 1 1 0 2 0 3 0 4 0 5 0 6 7 7 8 8 9 9 10 10 |
Clone
Dizinin bir bit kopyasını oluşturur. Yani bizim yazmış olduğumuz dizinin çıktısını alırken bir tanede kendisi aynı diziden otomatik olarak çıktı verir ve iki adet aynı dizi çıktısı alırız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int[] Rastgele = new int[10]; Random r = new Random(); for (int sıra = 0; sıra < 10; sıra++) Rastgele[sıra] = r.Next(40); Console.WriteLine("orjinal kodumuz"); foreach (int eleman in Rastgele) Console.Write(eleman + " "); Console.WriteLine("\n"); int[] Notlar = new int[10]; Notlar = (int[])Rastgele.Clone(); Console.WriteLine("kopya kodumuz"); foreach (int eleman in Notlar) Console.Write(eleman + " "); |
Burada Kodumuz içerisinde 10 adet eleman tanımladık ve rastgele sayılar vermesini sağlamış bulunmaktayız.
Ekran çıktısı
1 2 3 4 5 | orjinal kodumuz 35 23 31 33 13 0 5 9 5 21 kopya kodumuz 35 23 31 33 13 0 5 9 5 21 |
Copy
Dizinin istenilen eleman aralığını başka bir diziye kopyalamaya yarar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | string[] sayilar = new string[8]; sayilar[0] = "11"; sayilar[1] = "12"; sayilar[2] = "40"; sayilar[3] = "7"; sayilar[4] = "16"; sayilar[5] = "55"; sayilar[6] = "9"; sayilar[7] = "28"; string[] diziler = new string[4]; Console.WriteLine(" sayılar değişkeni kopyalandı "); Array.Copy(sayilar, diziler, 4); for (int i = 0; i < diziler.Length; i++) { Console.Write(i); Console.WriteLine(" => diziler değişkenine kopyalandı"); } Console.Read(); |
Ekran Çıktısı
Bu örneğimizde sayilar’daki 0 ile 3 arasındaki elamanlarımızı diziler kısmına kopyalamış bulunmaktayız.
1 2 3 4 5 | sayılar değişkeni kopyalandı 0 => diziler değişkenine kopyalandı 1 => diziler değişkenine kopyalandı 2 => diziler değişkenine kopyalandı 3 => diziler değişkenine kopyalandı |
CopyTo
CopyTo metodu ile bir dizinin tamamını ,başka bir dizinin istenilen yerine kopyalanabiliriz.
1 2 3 4 5 6 7 8 | string value = "Merhaba Nasılsın?"; char[]kopya = new char[20]; Console.WriteLine(" Orjinal İçerik "); Console.WriteLine(" Merhaba Nasılsın ? "); value.CopyTo(7, kopya, 1, 9); Console.WriteLine(" Kopya "); Console.WriteLine(kopya); Console.Read(); |
value.CopyTo(7, kopya, 1, 9);
yukarıdaki kodumuzun içerisindeki kısmı değiştirerek hangi karakter değerlerini kopyalamak isterseniz ona göre ayarlayabilirsiniz.
Ekran Çıktısı
1 2 3 4 | Orjinal İçerik Merhaba Nasılsın ? Kopya Nasılsın |
GetLength
Dizideki toplam eleman sayılarını verir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | Array MyArray1 = Array.CreateInstance(typeof(int), 5); // 3 boyutlu bir dizi Array MyArray2 = Array.CreateInstance(typeof(int), 5, 3, 2); Array BossArray = Array.CreateInstance(typeof(Array), 2); BossArray.SetValue(MyArray1, 0); BossArray.SetValue(MyArray2, 1); int i = 0, j, rank; foreach (Array anArray in BossArray) { rank = anArray.Rank; if (rank > 1) { Console.WriteLine("Uzunlukları {0:d} boyut dizisi[{1:d}]", rank, i); // her boyutun uzunluğunu göster for (j = 0; j < rank; j++) { Console.WriteLine("Boyut uzunluğu ({0:d}) = {1:d}", j, anArray.GetLength(j)); } } else { Console.WriteLine("Tek boyutlu dizinin uzunlukları[{0:d}]", i); } // tüm dizinin veya tüm boyutların toplam uzunluğunu göster Console.WriteLine(" Dizinin toplam uzunluğu = {0:d}", anArray.Length); Console.WriteLine(); i++; } |
Ekran Çıktısı
1 2 3 4 5 6 7 8 | Tek boyutlu dizinin uzunlukları[0] Dizinin toplam uzunluğu = 5 Uzunlukları 3 boyut dizisi[1] Boyut uzunluğu (0) = 5 Boyut uzunluğu (1) = 3 Boyut uzunluğu (2) = 2 Dizinin toplam uzunluğu = 30 |
GetValue
Dizideki ilgili eleman değerini verir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Tek boyutlu bir dizi oluşturur ve başlatır. String[] myArr1 = new String[5]; // Öğeyi dizin 2'te ayarlar. myArr1.SetValue("bir", 1); Console.WriteLine("[1]: {0}", myArr1.GetValue(1)); // İki boyutlu bir dizi oluşturur ve başlatır. String[,] myArr2 = new String[5, 5]; // Öğeyi 1,2 dizininde ayarlar. myArr2.SetValue("bir-iki", 1, 2); Console.WriteLine("[1,2]: {0}", myArr2.GetValue(1, 2)); // Üç boyutlu bir dizi oluşturur ve başlatır. String[,,] myArr3 = new String[5, 5, 5]; // Öğeyi 1,2,3 dizininde ayarlar. myArr3.SetValue("bir-iki-üç", 1, 2, 3); Console.WriteLine("[1,2,3]: {0}", myArr3.GetValue(1, 2, 3)); |
Ekran Çıktısı
1 2 3 | [1]: bir [1,2]: bir-iki [1,2,3]: bir-iki-üç |
IndexOf
Hazırlamış olduğumuz Dizi içindeki harf ya da kelimeleri aramamıza yardımcı olur. Eğer ki harf ya da kelimeyi bulabilirse bulduğu ilk indexi gönderir. Bulamaz ise geriye -1 değer göndermiş olur.
1 2 3 4 5 6 7 8 9 10 11 12 | string[] sayilar = new string[7]; sayilar[0] = "1"; sayilar[1] = "2"; sayilar[2] = "4"; sayilar[3] = "5"; sayilar[4] = "88"; sayilar[5] = "19"; sayilar[6] = "76"; Console.Write("=> Bulmuş olduğumuz index ; "); Console.WriteLine(Array.IndexOf(sayilar, "19")); Console.Read(); |
Ekran Çıktısı
1 | => Bulmuş olduğumuz index ; 5 |
Eğerki Console.WriteLine(Array.IndexOf(sayilar, “19”)); tırnak içine 19 yazdığımız değere tanımlı olmayan bir sayı yazarsak -1 değerini alırız.
Reverse
Reverse yazmış olduğumuz dizimizi tesri bir şekilde sıralanmış şekline çevirerek tekrardan yazdırmamızı sağlayan metottur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | //10 elemanlı bir dizi tanımladık. int[] sayilar = new int[10]; // döngü kurma kısmı for (int i = 0; i < 10; i++)// 10 adet eleman tanımamız için { Console.Write("-"); Console.Write((i + 1) + ("- Sayı Giriniz ; ")); sayilar[i] = Convert.ToInt32(Console.ReadLine()); //Klavyeden sayı girişi yapılıyor } //Diziye girilen değerler küçükten büyüğe sıralanıyor Array.Sort(sayilar); //küçükten büyüğe sıralanan değerler tersine sıralanarak büyükten küçüğe sıralanıyor Array.Reverse(sayilar); Console.WriteLine("--------------------------"); Console.WriteLine("Sayıların Sıralanmış Hali"); Console.WriteLine("--------------------------"); //Dizi sıralı hali ekrana yazdırılması için foreach (int sayi in sayilar) Console.WriteLine(sayi); |
Ekran Çıktısı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | -1- Sayı Giriniz ; 80 -2- Sayı Giriniz ; 950 -3- Sayı Giriniz ; 650 -4- Sayı Giriniz ; 45 -5- Sayı Giriniz ; 175 -6- Sayı Giriniz ; 84 -7- Sayı Giriniz ; 99 -8- Sayı Giriniz ; 77 -9- Sayı Giriniz ; 10 -10- Sayı Giriniz ; 7 -------------------------- Sayıların Sıralanmış Hali -------------------------- 950 650 175 99 84 80 77 45 10 7 |
SetValue
Bir dizinin bir elemanına değer atamak için kullanılır ve tek boyutlu veya çok boyutlu bir dizideki belirli bir değerin nasıl ayarlanacağını veya alınacağını göstermek için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Tek boyutlu bir dizi oluşturur ve başlatmak için. String[] myArr1 = new String[5]; // 1. dizindeki öğeyi ayarlamamız için. myArr1.SetValue("bir", 1); Console.WriteLine("[1]: {0}", myArr1.GetValue(1)); // İki boyutlu bir dizi oluşturmak ve başlatmak için. String[,] myArr2 = new String[5, 5]; // öğeleri 1 ve 2 dizininde ayarlar. myArr2.SetValue("bir-iki", 1, 2); Console.WriteLine("[1,2]: {0}", myArr2.GetValue(1, 2)); // Üç boyutlu bir dizi oluşturmak ve başlatmak için String[,,] myArr3 = new String[5, 5, 5]; // Öğeleri 1,2,3 dizininde ayarlamak için. myArr3.SetValue("bir-iki-üç", 1, 2, 3); Console.WriteLine("[1,2,3]: {0}", myArr3.GetValue(1, 2, 3)); |
Ekran Çıktısı
1 2 3 | [1]: bir [1,2]: bir-iki [1,2,3]: bir-iki-üç |
Sort
Bir boyutlu dizilerde sıralama yapar.
1 2 3 4 5 6 7 8 | string[] dizi = { "Emre", "Mert", "Ali", "Mustafa", "Ömer", "Osman", "Oktay" , "oguz" }; Console.WriteLine("Dizinin Karışık Elemanları\n------------------"); foreach (string s in dizi) Console.WriteLine(s); Array.Sort(dizi); Console.WriteLine(); Console.WriteLine("Sıralanmış Dizinin Elemanları\n------------------"); foreach (string s in dizi) Console.WriteLine(s); |
Ekran Çıktısı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Dizinin Karışık Elemanları ------------------ Emre Mert Ali Mustafa Ömer Osman Oktay oguz Sıralanmış Dizinin Elemanları ------------------ Ali Emre Mert Mustafa oguz Oktay Osman Ömer |
CreateInstance
Yeni bir dizi nesnesi oluşturur.
1 2 3 4 5 6 7 8 9 | Array dizi = Array.CreateInstance(typeof(int), 3, 2, 1); Random r = new Random(); for (int i = 0; i < dizi.GetLength(0); i++) for (int j = 0; j < dizi.GetLength(1); j++) for (int k = 0; k < dizi.GetLength(2); k++) { dizi.SetValue(r.Next(10, 20), i, j, k); Console.WriteLine("dizi[{0},{1},{2}]={3,3}", i, j, k, dizi.GetValue(i, j, k)); } |
Ekran Çıktısı
1 2 3 4 5 6 | dizi[0,0,0]= 12 dizi[0,1,0]= 15 dizi[1,0,0]= 17 dizi[1,1,0]= 17 dizi[2,0,0]= 12 dizi[2,1,0]= 19 |
Array dizi = Array.CreateInstance(typeof(int), 5, 4, 3); // Tam sıralı şekilde almak isterseniz sıra atlamadan yazdırmak için böyle ardışık rakamlar yazarak yapabilirsiniz. Anlayacağınız 5*4*3 = 60 tane çıktı verecektir. Burayı isteğinize göre değiştirebilirsiniz.
TEŞEKKÜRLER…
DİLERSENİZ JAVA , HTML & CSS KONULARINA GÖZ ATABLİRSİNİZ…