C# Dizi Full Anlatım
Dizi değişken oluştururken dikkat edilmesi gereken konular:
1- Dizi değişken adı normal değişken kurallarıyla aynı olmalıdır.
2- Dizide aynı türde veriler olmalıdır
3- Dizi indeksi ya da indisi 0’dan başlar.
4- Veri tipini belirttikten hemen sonra köşeli parantez ([]) oluşturulmalıdır. Eğer iki boyutlu dizi tanımlanacaksa köşeli parantez içine virgül ( [,]) koyulur.
5- Eğer değerler atanacaksa = {d1, d2, d3} şeklinde atanmalıdır.
6-Değertanmayacaksa = new dizininVeriTipi[elemanSayısı] şeklinde tanımlama ve boyut belirtmelidir.
Diziler için aynı tipteki verilerin tutulduğu bir koleksiyon diyebiliriz.
C# da tanımlanan tüm diziler System.Array sınıfından türemiş bir nesnedir.
1 | int[] sayilar = new int[10]; |
Bir dizinin boyutu bir kez belirlendikten sonra artık değiştirilemez.
Ancak boyutu dinamik olarak değişebilen çeşitli koleksiyon tabanlı dizi sınıfları mevcuttur. ArrayList sınıfı tipik olarak bunlara bir örnektir.
Dizilere Erişim
Dizi elemanlarına ulaşmak için [indeks] indeks operatörünü kullanırız. Dikkat edilmesi gereken nokta C# da dizilerin elemanları 0. İndeksten başlar, yani eğer 5 elemanlı bir dizimiz varsa bu dizinin birinci elemanı 0. indekste son elemanı ise 4. indekstedir. 5 elemanlı bir dizinin 3. elemanına aşağıdaki gibi erişiriz.
1 2 3 | int[] integerDizi = { 1, 2, 3, 4, 5}; int ucuncuEleman = integerDizi[2]; |
Peki kullandığımız dizinin eleman sayısını bilmeseydik nasıl döngüye girebilirdik. System.Array sınıfının Length diye bir özelliği vardır, Dizimizin eleman sayısını dizininAdi.Length diyerek alabiliriz.
1 2 3 4 5 | int[] integerDizi = { 4, 8, 23, 64, 35 }; for (int i = 0; i < integerDizi.Length; i++) { Console.WriteLine("Dizinin {0}. Elemanının Değeri = {1} ", i, integerDizi[i]); } |
Matris Diziler
Normal diziden farklı olarak virgül karakteri kullanılarak dizi boyutu belirlenir ve kullanılır.
Virgül sayısı arttıkça, boyut da artacaktır.
Örneğin, tek virgül koyarsak 2 boyutlu , 2 tane virgül koyarsak 3 boyutlu bir dizi olmuş olacak vs. vs……..
1 | int[ , ] sayilar = new int[3, 2]; (satır / sütun ) |
Setvalue
Dizilere bilgi aktarılırken Array sınıfının SetValue() metodu kullanılabilir. Bu metot diziye aktarılmak istenen değeri ve elemanın sıra numarasını (indis) numarasını parametre olarak almaktadır.
Dizi[0]=‘A’ ile Dizi.SetValue(‘A’,0) aynı işlemi yapar
Resize
1 2 | int sayi = Int32.Parse(Console.ReadLine()); ogrenci = new int[sayi]; |
Programın ileri aşamalarında new anahtar kelimesini kullanarak dizinin eleman sayısı tekrar değiştirilebilir. Ancak bu durumda dizi elemanlarının mevcut değerleri silinir.
Diğer yandan Array sınıfının Resize() metodundan yararlanıp mevcut dizinin elaman sayısı değiştirilebilir. Bu metot eleman sayısı değiştirilmek istenen dizinin referansını ve yeni eleman sayısını parametre olarak almaktadır. Resize() metodu ile eleman sayısı arttırılan bir dizinin mevcut elemanlarının değerleri korunur.
Clear
Dizi değişkenlerin içeriklerini silmek için Clear() metodu kullanılır. Array sınıfının bu metodu 3 parametreye sahiptir.
Array.Clear(Dizi adı, Başlangıç indis, Eleman sayısı);
Clear() metodu ile içeriği silinen
¢sayısal tipteki elemanların içeriği 0,
¢string tipteki elemanların içeriği boşluk
¢bool tipindeki elemanların içeriği ise false olur.
Copy
Bir dizinin elemanlarının değerlerini başka bir diziye aktarmak isteniyorsa Array sınıfının Copy() metodu kullanılabilir.
Array.Copy (Kaynak dizi ,Başlangıç, Hedef dizi, Başlangıç, Eleman sayısı);
Sort
Array sınıfının Sort() metodu kendisine parametre olarak verilen dizinin elemanlarını küçükten büyüğe sıralar.
1 | Array.Sort(dizi); |
Reverse
Array sınıfının Reverse() metodu kendisine parametre olarak verilen diziyi ters çevirmek için yeniden düzenler.
1 | Array.Reverse(dizi); |
BinarySearch
Sıralı dizilerde arama yapılırken Array sınıfının BinarySearch() metodundan yararlanılmaktadır. Binary metodunun aşırı yüklenmiş 4 sürümü bulunmaktadır.En basit sürümü 2 parametreye sahiptir. BinarySearch() metoduyla dizi değişkenlerinde arama yapabilmek için değişkenin daha önceden Short() metodu ile sıralanması gerekir.
1 | Array.BinarySearch(Dizi, Aranacak Bilgi) |
Empty
Tanımlayıp bilgi aktardığınız string değişkenin içeriğini boşaltmak istiyorsanız Empty özelliğinden yararlanabilirsiniz.
1 2 3 | string spor = "Basketbol"; Console.WriteLine("METNİMİZ = " + spor); spor = String.Empty; |
isNullOrEmpty()
String değişkenin içeriğinin boş veya null olup olmadığını öğrenmek istiyorsanız, String sınıfının IsNullOrEmpty() metodunu kullanabilirsiniz. Bu metod parametre olarak aldığı değişken null veya uzunluğu 0 ise geriye true döndürmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | string spor1 = "Basketbol"; string spor2 = string.Empty; string spor3 = null; if (String.IsNullOrEmpty(spor1)) Console.WriteLine("1. değişken null veya boş"); if (String.IsNullOrEmpty(spor2)) Console.WriteLine("2. değişken null veya boş"); if (String.IsNullOrEmpty(spor3)) Console.WriteLine("3. değişken null veya boş"); Console.ReadKey(); |
ToLower() ve ToUpper()
ToLower() metodu kendisinden önce yazılan bilginin alfabetik karakterlerinden büyük harf olanlarını küçük harfe çevirmektedir.
1 | string deneme = "TeknoHisar"; Console.WriteLine(deneme.ToUpper()); |
Bu metodun rakamlar ve diğer karakterler üzerinde bir etkisi yoktur.
ToUpper() metodu ise karaktersel bilgideki küçük harfleri büyük harfe çevirmektedir.
Insert()
Bu metod karaktersel bir bilginin istenen yerine başka bir bilgiyi eklemek amacıyla kullanılmaktadır. Eklenecek bilgi Insert() metoduna 2. parametre olarak verilir.
1 2 3 4 | KarakterselDeğişken.Insert(Başlama İndeksi, Eklenecek Bilgi) string deneme2 = deneme.Insert(2, ‘Üniversitesi’); niş |
Remove()
Karaktersel bilginin bir kısmını silmek istiyorsanız Remove() metodunu kullanabilirsiniz.
Remove(kaçıncı indisten itibaren,kaç deger silinecek)
1 | string deneme2 = deneme.Remove(15,10); |
Split()
Split() metodu sayesinde karaktersel bilgileri istediğiniz sayıda parçaya bölebilirsiniz. Örneğin bu metodu kullanarak birlikte yazılan ad ve soyadı birbirinden ayırabilirsiniz.
1 | Karaktersel Bilgi.Split(Ayırıcı Karakter) |
Geriye gönderilen bilgileri yakalamak için daha önceden dizi değişken tanımlamalısınız. Split() metoduna ayrıcı karakter parametre olarak verilmezse bunun boşluk(‘ ‘) olduğu varsayılmaktadır.
Foreach
For ile aynı görevi vardır.Tek farkı boyutu belli olmayan işlemlerde for’u kullanamıyorduk fakat bunu kullanabiliyoruz. Özellikle dizilerde kullanılıyor.
1 2 3 4 5 | int[] sayiArray = {6,5,4,3,2,1,0,-1,-2,-3,-4 }; foreach ( int i in sayiArray) { System.Console.Write("{0} ", i); } |