Herkese merhaba arkadaşlar bugün sizlerle c# dilinde diziler ve koleksiyonları konuşacağız
öncelikle dizilerden başlayalım.
TAHMİNİ OKUMA SÜRESİ: 8 dakika 4 saniye
0.1 DİZİLER
Aynı tipteki değişkenleri bellekte saklamak isteğimizde dizileri kullanırız.
Dizideki tüm değişken tipleri birbiriyle aynıdır.
dizilerde eleman sayısı belirtmek zorunludur
dizilerde kullanılmayan elemanlar da bellekte yer kaplar bu yüzden performansı ve donanımı dikkate almamız gerekmektedir
fakat diziler sadece tek tip değildir kendi içinde farklı tipleri de bulunmaktadır
örneğin tek boyutlu çok boyutlu...
farklı dizi tiplerini basitçe tanımlamayı gösterelim o halde.
C#:
int[] numbers = new int[3] {10,14,1};
int[] numbers1 = { 1, 2, 3, 4 };
string[] names ={"leif erikson", "Sweyn Forkbeard","eric bloodaxe" };
// iki boyutlu dizi
int[,] multiDimensionalArray1 = new int[2, 3];
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };
// düzensiz dizi
int[][] jaggedArray = new int[6][];
dizilerin genel olarak bu şekilde tanımlayabiliriz
şimdi basitçe tek boyutlu dizilerde farklı işlemler yapalım
şimdi basitçe tek boyutlu dizilerde farklı işlemler yapalım
C#:
int[]
sayılar = new int[20] { 10, 14, 123, 245, 21, 123, 12, 157, 83, 85, 93, 57, 37, 36, 35, 81, 78, 45, 92, 20};
int toplam = sayılar[7] + sayılar[12]; //belirtilen indexlerdeki değerlerin toplanması
Console.WriteLine(toplam +" toplam " +"\n" + "----------");
int aranan = 245;
int konum = Array.IndexOf(sayılar, aranan); //dizide eleman arama
Console.WriteLine(aranan + " sayının listedeki konumu : " + konum + "\n" + "----------");
Array.Resize(ref sayılar, 25); //dizinin yeniden boyutlandırılması işlemi
sayılar[21] = 24;
sayılar[22] = sayılar[3] + sayılar[9] + sayılar[16]; //çeşitli matematiksel işlemler ile dizinin belirtilen indexlerindeki değerlerin değiştirilmesi
sayılar[23] = sayılar[19] - sayılar[1]; // dizilerde değerlere ulaşmak için index numaralarını kullanırız
sayılar[24] = sayılar[4] * sayılar[1] * sayılar[2] * sayılar[3];
Array.Clear(sayılar,15,3); //dizinin 15. elemanından itibaren sırasıyla 3 değeri silme
Console.WriteLine("eleman sayısı:" + sayılar.Length+"\n"+"----------"); //eleman sayısını yazdırma
for (int i = 0; i < sayılar.Length; i++) //dizinin elemanlarını yazdırma
{
Console.WriteLine(sayılar[i]+" "+i+".indexteki eleman"+"\n"+"---------------------------");
}
Kod:
OUTPUT
245 sayının listedeki konumu : 3
----------
194 toplam
----------
eleman sayısı:25
----------
10 0.indexteki eleman
---------------------------
14 1.indexteki eleman
---------------------------
123 2.indexteki eleman
---------------------------
245 3.indexteki eleman
---------------------------
21 4.indexteki eleman
---------------------------
123 5.indexteki eleman
---------------------------
12 6.indexteki eleman
---------------------------
157 7.indexteki eleman
---------------------------
83 8.indexteki eleman
---------------------------
85 9.indexteki eleman
---------------------------
93 10.indexteki eleman
---------------------------
57 11.indexteki eleman
---------------------------
37 12.indexteki eleman
---------------------------
36 13.indexteki eleman
---------------------------
35 14.indexteki eleman
---------------------------
0 15.indexteki eleman // BOŞ OLAN YERLERE 0 ATAR
---------------------------
0 16.indexteki eleman
---------------------------
0 17.indexteki eleman
---------------------------
92 18.indexteki eleman
---------------------------
20 19.indexteki eleman
---------------------------
0 20.indexteki eleman
---------------------------
24 21.indexteki eleman
---------------------------
408 22.indexteki eleman
---------------------------
6 23.indexteki eleman
---------------------------
8859690 24.indexteki eleman
---------------------------
0.2 KOLEKSİYONLAR
böyle bir ayrımın olma sebebi değişkenleri alış biçimleridir
generic olanlar sadece seçilen tipte veri alırken
non generic olanlar her tipte veriyi kabul edebilir.
Öncelikle Generic koleksiyonların Non-Generic koleksiyonlardan artısı eksisi nedir onu anlatalım.
Non-Generic koleksiyonlar verileri object tipten aldıkları için Boxing işlemine uğruyorlar.
ve bu yüzden elemanlara erişirken Unboxing işlemi yapıyoruz.
performans açısından daha iyi olanı belirleyip kullanmak önemlidir
bugün sizlerle koleksiyonlarda arraylist,list ve stack yapılarını inceleyeceğiz
0.3 ARRAYLİST
ArrayList değişken türlerine bakmadan tüm değişken tiplerine değer tutabilir.
mesela int türünde değerleri alabildiği gibi string türündeki değerleride almaktadır.
Her yeni eleman eklendikçe kapasitesi otomatik olarak artmaktadır.
arraylist için basit bir örnek yapalım.
C#:
ArrayList liste = new ArrayList(); //tanımlama
liste.Add("bjorn ironside"); //ekleme
liste.Add("1071"); //gördüğünüz üzere farklı veri tipleri kullanıyorum
liste.Add(14.4);
liste.Remove("1071"); //silme
Console.WriteLine("Count: {0}", liste.Count); //eleman sayısı
Console.WriteLine("Capacity: {0}", liste.Capacity); // kapasite
Console.WriteLine("Name: {0}", liste.GetType().Name);
Console.WriteLine("------------------");
foreach (var item in liste)
{
Console.WriteLine(item+"\n"+"-----------"); //listeleme
}
//çıktı
Count: 2
Capacity: 4
Name: ArrayList
------------------
bjorn ironside
-----------
14.4
-----------
0.4 LİST
list yapısı generictir.
sadece seçilen veri tipindeki elemanları kabul eder
performans açısından bakarsak
List>arraylist diyebiliriz.
sebebi ise yukarıda da belirttiğim boxing unboxing işlemleridir
Eğer koleksiyon içinde bütün veriler aynı tipte olacaksa ArrayList yerine Generic List koleksiyon yapısı kullanılır
örnek:
list yapısı generictir.
sadece seçilen veri tipindeki elemanları kabul eder
performans açısından bakarsak
List>arraylist diyebiliriz.
sebebi ise yukarıda da belirttiğim boxing unboxing işlemleridir
Eğer koleksiyon içinde bütün veriler aynı tipte olacaksa ArrayList yerine Generic List koleksiyon yapısı kullanılır
örnek:
C#:
// tek tip değişken alır ( belirlenen tip)
List<int> list1 = new List<int>(); //tanımlama
// list1.Add("aaaaa"); kodu çalıştırdığınızda bu kısım çalışmayacaktır çünkü dediğim gibi bu list sadece int tipindeki verileri tutacaktır
list1.Add(999);
list1.Add(913);
list1.Add(93);
list1.Add(10);
list1.Add(26);
list1.Add(30);
list1.Remove(999); //silme
foreach (var item in list1)
{
Console.Write(Convert.ToString(item+"\n")); // int olduğu için dönüşüm yaptırıyorum
}
0.5 STACK
stack hem generic hem non generic olarak kullanılabilmektedir
ilk eklenen elemanın koleksiyondan en son çıkarıldığı ve en son eklenen elemanında ilk çıkarıldığı bir yapıdır
stack hem generic hem non generic olarak kullanılabilmektedir
ilk eklenen elemanın koleksiyondan en son çıkarıldığı ve en son eklenen elemanında ilk çıkarıldığı bir yapıdır
C#:
Stack<int> yigin = new Stack<int>();
// tanımlarken bir sınıf belirtebilirsiniz
Stack yigin2 = new Stack();
// Pop(): Stack’in en üstündeki nesneyi çıkarır.
// Push(): Stack’in en üstüne bir nesne ekler.
yigin2.Push("baldur");
yigin2.Push("loki");
yigin2.Push("odin");
yigin2.Push("hel");
yigin2.Push(456); //gördüğünüz üzere farklı veri tiplerini de alabiliyor
yigin2.Push("fenrir");
yigin2.Push("vılı");
yigin2.Push("forseti");
yigin2.Push("tyr");
yigin2.Push(666);
yigin2.Pop(); //Pop işlemi yığının en üst elemanı siler ve döndürür
Console.WriteLine(yigin2.Peek() + " en üstteki değer");
Console.Write("---------------" + "\n");
Console.Write(yigin2.Count+" eleman var"+"\n"); // kaç eleman var
Console.Write("---------------"+"\n");
foreach (var item in yigin2)
{
Console.WriteLine(item + "\n");
}
Okuduğunuz için teşekkürler.
Eksik,yanlış varsa lütfen belirtiniz.





