C# Dizi Kopyalama

C# Dizi Kopyalama

C# Dizi Kopyalama

  4 dakika Okuma Süresi
Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde bir diziyi başka kopyalayıp başka bir dizi oluşturmayı anlatacağım. Hadi başlayalım !

Dizi kopyalamak için birden çok seçeneğimiz var. C#'ın sahip olduğu hazır kopyalama fonksiyonlarını kullanmanın yanı sıra, kendi fonksiyonumuzu da yazabiliriz.
Bu yazımızda her ikisinden de bahsedeceğiz ama ben elbette dizi fonksiyonlarını kullanmayı tavsiye ediyorum.
Her neyse biz işimize bakalım.

Örnek olarak bir tane integer dizisi oluşturalım, örneklerimizi bu dizi üzerinden anlatacağım.
int[] dizi = { 1, 2, 3, 4, 12, 5, 15, 11 };
Öncelikle kendi fonksiyonumuzu yazalım.
Oluşturduğumuz dizinin her bir elemanını döngü ile dönerek her elemanı oluşturduğumuz farklı bir dizinin içerisine ekleyelim. Bu sayede az önce oluşturduğumuz dizi korunmuş olacak ve yeni bir dizi oluşturulacaktır.

int[] dizi2 = new int[dizi.Length];
for(int i = 0; i < dizi.Length; i++)
    dizi2[i] = dizi[i];
dizi2 isimli dizinin boyutunu dizi'nin uzunluğu kadar ayarladık, çünkü kopyalanacak dizinin uzunluğu, elimizdeki diziden az ise hata fırlatılacaktır.
Fakat daha fazla yapabiliriz, bunda bi sakınca yok :) Çünkü dizi'nin elemanları dizi2'ye aktarılacak ve kalanlar sıfır olarak atanacaktır.

Kendi kodumuzu yazdık, şimdi de sistem fonksiyonlarından bahsedelim.
Sistem fonksiyonlarında ise 2 tane yolumuz var.
Birincisi Array sınıfı içerisinde bulunan static tipteki yani bulunduğu sınıfın yeni bir nesnesi türetilmeden erişilebilen Copy() fonksiyonu.
Bu fonksiyon kaynak dizi, hedef dizi ve kopyalanacak eleman sayısı olmak üzere 3 parametre alıyor.
Kopyalanacak eleman sayısı ile, kaynak dizinin kaç tane elemanını kopyalamak istediğimizi belirtebiliyoruz. Yani istersek diziden 1 tane, istersek 3 tane, istersek dizinin hepsini kopyalayabiliyoruz.
Örnek kullanımı ise şu şekilde;

int[] dizi3 = new int[dizi.Length];
Array.Copy(dizi, dizi3, dizi.Length);
int[] dizi4 = new int[4];
Array.Copy(dizi, dizi4, 4);
Array.Copy(dizi, dizi3, dizi.Length); satırında dizi'nin tüm elemanlarını dizi3 isimli diziye kopyaladık.
Array.Copy(dizi, dizi4, 4); satırında ise dizi'nin ilk 4 tane elemanını dizi4 isimli diziye kopyaladık.

İlk sistem fonksiyonundan bahsettik, ikinci olarak dizi nesnesi içerisinde bulunan CopyTo() fonksiyonunu kullanabiliriz.
Bu fonksiyon ise hedef dizi ve kopyalanacak eleman sayısı olmak üzere 2 parametre istiyor.
Aynı şekilde kopyalanacak eleman sayısı ile kaynak dizinin kaç elemanının kopyalanacağını belirtebiliyoruz.
Hemen örnek kod yazalım;

int[] dizi5 = new int[dizi.Length];
dizi.CopyTo(dizi5, dizi.Length);
int dizi6 = new int[5];
dizi.CopyTo(dizi6, 3);
dizi.CopyTo(dizi5, dizi.Length); satırında dizi'nin tüm elemanlarını dizi5 isimli diziye kopyaladık, dizi.CopyTo(dizi6, 3); satırında ise dizi'nin ilk 3 elemanını dizi6 isimli diziye kopyaladık.
Fakat dikkat ettiyseniz dizi6'nın uzunluğu 5 iken, dizi'den 3 eleman kopyaladık. Kopyalanan elemanlar ilk 3 indexe geçecek, ya sonrası ? 4 ve 5. elemanlar ne olacak derseniz, onlar için de sıfır atanacaktır.

Evet C# ile dizi kopyalama işlemleri bu kadar, dolayısıyla bu dersimizin daha sonuna geldik.
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.


  • İçeriği Paylaş:

İÇERİĞİ DEĞERLENDİR

Toplam Değerlendirme Sayısı: 0
Toplam Değerlendirme: 0 / 5

Cevap Yaz