C# programlama dilinde bir değişken oluşturup, içinde bir veri kaydetmeyi öğrendiniz. Ancak benzer tipte verileri gruplayıp tek bir değişken içinde saklamak mümkündür. Bu yazıda C# ile dizi tanımlayıp, diziler üzerinde örneklerle işlemler yapacağız.
C# diziler; ortak bir ad ile belirtilen benzer verileri, bir bir arada tutmak için oluşturulmuş bir gruptur. Ve her veri ögesine dizinin bir elemanı denir. Elemanların veri tipleri char, int, float vb. geçerli bir veri tipi olabilir ve elemanlar bitişik bir yerde saklanır.
Dizinin uzunluğu, dizide bulunan elemanların sayısını belirtir. C# ‘da diziler için bellek tahsisi dinamik olarak yapılır. Ve diziler nesnedir, bu nedenle önceden tanımlanmış methodları kullanarak boyutlarını bulmak kolaydır.
Dizideki değişkenler belirli bir numara sırasına göre sıralanır ve her biri 0 (Sıfır)‘dan başlayan bir dizin içerir.
Dizi kavramını bir örnekle açıklayalım. Bir değişkenin sadece bir değer tutabileceğini öğrendik, örneğin int yas = 1;
yas değişkenine sadece bir değer atanabilir. Farz edelim ki, 100 farklı yaş değeri saklamak istiyorsunuz, o zaman 100 farklı değişken oluşturmak zahmetli olacaktır.
Bu sorunun üstesinden gelmek için C# bir dizi tanımlayarak bu sorunu çözmek daha akılcı olacaktır. Bu C# diziler konu anlatımı ile bir diziyi tanımla, değer atama ve okuma işlemleri konusunda fikir sahibi olacaksınız.
Diziler ile ilgili aklınızdan çıkarmamanız gereken bir kaç önemli nokta
- C#’da, tüm diziler dinamik olarak ayrılır.
- Diziler C# içinde nesneler olduğundan, uzunluklarını Length kullanarak bulabiliriz. Bu, sizeof kullanarak uzunluk bulduğumuz C / C ++ ‘dan farklıdır.
- Bir C# dizisi değişkeni, veri türünden sonra [ ] ile diğer değişkenler gibi bildirilebilir.
- Dizideki değişkenler sıralanır ve her biri 0’dan başlayan bir dizin içerir.
- C# dizisi, System.Array temel türünün bir nesnesidir.
- Sayısal dizinin ve referans tipi öğelerinin varsayılan değerleri sırasıyla sıfır ve boş olarak ayarlanır.
- Tırtıklı dizi elemanlarının referans türleri null olarak başlatılır.
- Dizi öğeleri, dizi tipi de dahil olmak üzere herhangi bir türde olabilir.
Dizi, bir dizinin tanımına bağlı olarak bir sınıfın nesneleri yada daha ilkel veri türlerini de içerebilir. İlkel veri türlerini her kullanıldığında, gerçek değerler bitişik hafıza konumlarında saklanmalıdır. Bir sınıfın nesneleri durumunda, gerçek nesneler yığın segmentinde depolanır.
Aşağıdaki şekil, dizinin değerlerinin sırayla nasıl kaydedildiğini gösterir:
Açıklama:
Yukarıdaki örnekte index değeri 0’dan başlıyor. Ayrıca bir dizi içinde sabit bir sayı değeri saklandığı da görünmektedir. Dizi indeksi, dizi boyutunun bir azı kadar olduğunu da unutmamak gerekir.
C# Dizi Tanımlama
1 2 3 | <VeriTipi>[] <DiziAdi> |
<VeriTipi>: Dizide saklanacak veri tipini belirtir.
[] :Dizi olarak verilerin saklanacağını ifade eder.
<DiziAdi>: Dizi değişkeninin adını gösterir. Bir değişken adı ile aynı tanımlama kuralları geçerlidir.
C# Dizi Tanımlama Örnekleri:
1 2 3 4 5 6 | int[] yas; // Tam sayı türünde değerlerin saklandığı bir dizi string[] isimler; // String türünde değerlerin saklandığı bir dizi double[] para; // ondalıklı sayıların saklandığı bir dizi türü Personel[] pers1; // Personel sınıfından örnek nesnelerin saklandığı bir dizi |
C# Başlatma
C# diziler Array sınıfın birer örneği olduğunu söylemiştim.new anahtar kelimesi ile tanımlanmış bir diziye hemen uzunluk belirtmek mümkündür. Aşağıdaki örneklerde dizi tanımlanıp hemen değer atamaları yapılmıştır.
Örnek: dizi oluşturup uzunluk vermek
1 2 3 | string[] stringArray = new string[6]; |
C# Dizi Tanımlama ve Değer Atama
Yada dizi oluşturulduğu gibi dizinin elemanlarını başta girebiliriz. new anahtar kelimesi ile Array sınıfından örnek bir dizi oluşturup hemen üzerine değer ataması yapabilirsiniz.
1 2 3 | int[] array1 = new int[] { 1, 3, 5, 7, 9 }; |
1 2 3 | string[] gunler= { "PAZARTESİ", "SALI", "ÇARŞAMBA", "PERŞEMBE", "CUMA", "CUMARTESİ", "PAZAR" }; |
C# Dizi Okuma – C# Dizi Değerlerini Yazdırma
C# dizideki bir adresi tek tek okumak yada bir döngü ile de okumak mümkündür. Yukarıdaki tabloda belirtildiği gibi okunacak değerin adres bilgisi köşeli parantez ile belirtilip okuma işlemi yapılır. Aşağıdaki örnekte tanımlanmış dizinin 0 ve 4 numaralı index içindeki değerler okunmuştur.
1 2 3 4 5 | int[] array1 = new int[] { 1, 3, 5, 7, 9 }; Console.WriteLine(array1[0]); Console.WriteLine(array1[4]); |
Ayrıca dizideki değerleri döngü ile de okumak mümkündür. Sadece listelerde kullanılan foreach yada for ve while ile okuma işlemleri yapılabilir. Aşağıdaki örnekte for döngüsü ile dizinin değerleri alt alta yazdırılmıştır. Burada Length özelliğinin dizinin uzunluğunu verdiğini belirtmek isterim.
1 2 3 4 5 6 7 | int[] array1 = new int[] { 1, 3, 5, 7, 9 }; for (int i = 0; i < array1.Length; i++) { Console.WriteLine(array1[i]); } |
Ayrıca C# Diziler Konusu ile İlgili Diğer Başlıklar
- Dizileri Yeniden Boyutlandırma
- Dizilerde Kullanılan Metotlar
- Dizi İçinde Arama İşlemleri
- ArrayList Sınıfı
- ArrayList Örnekleri
- List Kullanımı
- HashTable Sınıfı
C# Dizi Örnekleri Console
Örnek: C# dizi tanımlama, değer atama ve değerleri for, foreach, while, do while döngülerini kullanarak ekrana yazdırma
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | class Program { static void Main(string[] args) { // dizi tanımlama int[] intArray; // dizinin boyutunu belirleme intArray = new int[5]; // dizinin ilk dizinine değer atama intArray[0] = 10; // dizinin ikinci dizinine değer ataa intArray[1] = 20; // sonraki dizinlerine değer ataa intArray[2] = 30; intArray[3] = 40; intArray[4] = 50; //for döngüsü le dizinindeğerlerini yazdırma Console.Write("For Döngüsü :"); for (int i = 0; i < intArray.Length; i++) Console.Write(" " + intArray[i]); Console.WriteLine(""); Console.Write("Foreach DÖngüsü :"); // foreach kullanımı foreach (int i in intArray) Console.Write(" " + i); Console.WriteLine(""); Console.Write("while Döngüsü :"); //while döngüsü int j = 0; while (j < intArray.Length) { Console.Write(" " + intArray[j]); j++; } Console.WriteLine(""); Console.Write("Do-while döngüsü :"); // do while kullanımı int k = 0; do { Console.Write(" " + intArray[k]); k++; } while (k < intArray.Length); Console.ReadLine(); } } |
Örnek:Kullanıcı tarafından girilen gün adının haftanın kaçıncı günü olduğunu bulan c# console uygulaması
1 2 3 4 5 6 7 8 9 10 11 12 13 | string[] gunler = { "pazartesi", "salı", "carsamba", "persembe", "cuma", "cumartesi", "pazar" }; Console.WriteLine("Gün adı giriniz : "); string gun = Console.ReadLine(); for (int i = 0; i < gunler.Length; i++) { if (gun == gunler[i]) { Console.WriteLine(i + 1 + ". gündür"); } } Console.ReadLine(); |
Örnek: Dizi elemanları üzerinde sorgu çalıştırma
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 | class Program { static void Main(string[] args) { // Dizi tanımlama int[] sayilar = new int[] { 17, 92, 81, 10,45,96,41 }; // Linq ile diziler üzerinde sorgu çalıştırma IEnumerable<int> sayiSorgu = from s in sayilar where s > 50 select s; // Sorgu sonucunda dönen değeri yazdırma foreach (int i in sayiSorgu) { Console.Write(i + " "); } Console.ReadLine(); } } |
Örnek: Eleman sayısını kullanıcının belirlediği bir dizi oluşturarak içine kullanıcının eleman girmesini sağlayan örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int mevcut=0; Console.Write("Sınıf mevcudunu Girin : "); mevcut = Convert.ToInt32(Console.ReadLine()); Console.WriteLine(); string[] ogrenci = new string[mevcut]; for(int i=0;i<mevcut;i++) { Console.Write("Öğrenci Adını Girin : "); ogrenci[i]=Console.ReadLine(); } Console.WriteLine("===================================="); Console.WriteLine("www.yazilimkodlama.com"); Console.ReadKey(); |
Örnek: 20 elemanlı diziye rasgele -100 ile +100 arası sayılar atan ve daha sonra dizinin elemanlarını, pozitif sayı adetini,negatif sayı adetini ve işaretsiz sayı adetini ekranda gösteren örnek:
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 33 34 35 36 37 | static void Main(string[] args) { int pozitif = 0; int negatif = 0; int notr = 0; Random rnd = new Random(); int[] sayilar = new int[20]; for (int i = 0; i < 20;i++ ) { sayilar[i] = rnd.Next(-100, 100); } foreach(int sayi in sayilar) { Console.WriteLine(sayi); if(sayi>0) { pozitif++; } else if(sayi<0) { negatif++; } else { notr++; } } Console.WriteLine("Pozitif Sayı Adeti>>> " + pozitif); Console.WriteLine("Negatif Sayı Adeti>>> " + negatif); Console.WriteLine("İşaretsiz Sayı Adeti>>> " + notr); Console.ReadKey(); } |
Örnek: 10 elemanlı string dizi içindeki tek sayıları foreach döngüsüyle ekrana yazdıran ve teksayıların adetini ekranda gösteren örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | static void Main(string[] args) { int sayac = 0; int[] sayilar = { 10,15,20,33,22,11,9,8,48,47,12,25,12,21 }; int toplam = 0; foreach (int sayi in sayilar) { if (sayi % 2 == 1) { sayac++; Console.WriteLine(sayi); } } Console.WriteLine("Tek sayı adeti= " + sayac); Console.ReadKey(); } |
C# Windows Form Kullanılarak yapılmış Dizi Örneklerine ulaşmak için burayı tıklayın.
ramazanakbuz olarak teşekkür ediyorum