C# Eğitimlerimize önemli bir konu olan Diziler ile devam ediyoruz.

Diziler yani matrisler günlük hayatta da pek çok işimizi çözmede yardımcı olduğu gibi programlamada da çok özel bir yeri vardır.

Neden Diziler?

Şimdiye kadar öğrendiğimiz programlama bilgilerinde pek çok veri tipinden bahsettik. Değişken tanımlamaları yaptık. Örnek projelerimizde bu değişkenlere değer atamayı gördük.

Şöyle bir senaryo düşünelim. 100 kişilik bir sınıf olsun. Bu sınıftaki tüm öğrencilerin isimlerinin program tarafından tutulup istenildiğinde de isimlerinin gösterilmesini isteyelim.

Şimdiye kadarki olan bilgilerimizden yola çıkarsak bu işlem için şöyle bir şey yapmamız gerekebilirdi.

string öğr1;

string öğr2;

string öğr3;

.

.

.

string öğr100;

 

 

Sadece basit bir değişken tanımlaması için 100 satır aynı kodu yazdık.

Mantıklı bir hareket mi diye düşündüğümüzde kolayca bunun çokta mantıklı bir iş olmadığı kanısına varabiliriz.

İşte tamda bu seri halindeki aynı türden değişkenlerimizi kolayca tutabilelim sonrada ulaşabilelim diye diziler kavramı ortaya atılmış.

Dizi Tanımlama

Pek çok dizi tanımlaması mevcuttur.

  • VeriTipi[] Değişkenİsmi = new VeriTipi[Boyut];
string[] Adlar = new string[100];

int[] Sayılar = new int[100];

char[] Harfler = new char[75];

 

  • İlk Değer Ataması
string[] Adlar = new string[] { "Murat", "Bilginer", "Industryolog" };

Yukarıdaki örnekte olduğu gibi ilk değer atamaları da yapılabilir.

Burada dizinin boyut değeri girilmeyip istenildiği kadar değer yazılabileceği gibi. Dizinin boyutu da verilerek işlem yapılabilir.

string[] Adlar = new string[3] { "Murat", "Bilginer", "Industryolog" };

 

Eğer dizinin boyutunu verip içeriğine daha fazla eleman girersek bu durumda hata alırız.

 

Eğer deklere ettiğiniz değer daha yüksek olsa yine hata alacaktınız. Yani 4 değer olduğunu söyleyip 3 değer girseydiniz aynı hatayı alacaktınız. Böyle bir kullanımda deklere ettiğiniz kadar değeri diziye gireceğinizi garanti etmiş olursunuz.

 

İlk değer ataması yapılırken boyutsuz bir şekilde de yapılabilir.

string[] Adlar = {"Murat","Bilginer"};

Böyle bir dizi tanımlaması sonucu girilen değer dizinin uzunluğunu da belirlemiş olur.

  • Boyutsuz Tanımlama

Dizinin tanımlamasını yapıp new anahtar kelimesi ile türetmeden de kullanabilirsiniz.

string[] Adlar;

Bu dizi istediğiniz kadar değer alabilecektir.

Değer ataması yaparken new anahtarıyla türetmenize ihtiyaçta duymayacaktır.

Diziye Değer Atama

Bir dizi tanımlaması yaptınız bu diziye değer atayacaksınız bunu yapabilmenin de birden fazla yolu var.

Normal değişkene değer ataması yapar gibi bunu yapabilirsiniz. Ancak burada farklı bir durum var dizinin hangi indisine değer atanacak bunu belirlemelisiniz.

DipNot: C# da diziler 0 dan saymaya başlar.

string[] Adlar = new string[100];

Adlar[0]="Murat";

Adlar[1]="Bilginer";

 

şeklinde değer atamalarını gerçekleştirebiliriz.

Önemli Not: Burada dikkat etmemiz gereken önemli bir husus veri tiplerine göre değer atama şekillerinin değiştiğidir. Yani normal veri tiplerinde atamaları nasıl gerçekleştiriyorsak burada da aynı kural geçerli.

int[] Sayılar = new int[100];

Sayılar[0]=1;

char[] Harfler = new char[100];

Harfler[0]='a';

 

Şeklinde olacaktır.

ÖnemliNot: Bir diziyi tanımladığınızda eğer bu sayısal içerikli ise ve ilk değer ataması yapılmamışsa tüm indislerini 0 olarak set edecektir. Eğer string bir dizi oluşturduysanız değerleri boş karakter olarak atacaktır.

Bu yüzden dizinin istediğimiz indisine değer ataması yapabiliriz. Yani atamaların sıralı olmasına gerek yoktur.

Dizi Değerlerine Ulaşma

İstediğimiz zaman bir dizinin değerine yine istediğimiz indise işaret ederek alabiliriz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Arrays_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

string[] Adlar = new string[100];

private void button1_Click(object sender, EventArgs e)
{
Adlar[0] = "Murat";
Adlar[1] = "Bilginer";
label1.Text = Adlar[0];
}
}
}

 

 

Gördüğümüz gibi label1.Text = Adlar[0]; kod yardımı ile Adlar dizisinin 0. elemanın ne olduğunu göstermiş oldum.

Tür dönüşümleri diziler içinde geçerlidir.

label1.Text = Adlar[0].ToString(); şeklinde string türe dönüştürülebilir.

Sayı=Convert.ToInt32(Adlar[0]); eğer yapısı uygunsa dizi içindeki değer bu şekilde int türüne de dönüştürülebilir.

Bir sonraki eğitim yazımda görüşmek üzere.


muratbilginer