Merhaba arkadaşlar, bu yazımda C# dilinde dizileri nasıl kopyalayabileceğimizi göstereceğim. Diziler, aynı türden birden fazla veriyi saklamamızı sağlayan veri yapılarıdır. Örneğin, bir sınıftaki öğrencilerin isimlerini bir dizi olarak tutabiliriz. Ancak bazen dizileri başka bir değişkene veya metoda aktarmak isteyebiliriz. Bu durumda dizileri nasıl kopyalayacağımız önemli bir konu haline gelir.
Diziler Nasıl Kopyalanır?
Yüzeysel Kopyalama
Dizileri kopyalamanın iki temel yolu vardır: yüzeysel kopyalama ve derin kopyalama. Yüzeysel kopyalama, dizinin referansını kopyalamak demektir. Yani, aslında dizinin kendisini değil, diziyi gösteren bir işareti kopyalarız. Bu şekilde, kopyaladığımız değişken veya metot, orijinal dizi ile aynı veriyi paylaşır. Bu da demek oluyor ki, eğer kopyaladığımız değişken veya metot üzerinde bir değişiklik yaparsak, orijinal dizi de etkilenir. Örneğin, şöyle bir kod yazalım:
int[] dizi1 = new int[] {1, 2, 3}; // Bir dizi oluşturuyoruz
int[] dizi2 = dizi1; // Yüzeysel olarak kopyalıyoruz
dizi2[0] = 5; // Kopyaladığımız dizinin ilk elemanını değiştiriyoruz
Console.WriteLine(dizi1[0]); // Orijinal dizinin ilk elemanını yazdırıyoruz
Bu kodu çalıştırdığımızda, ekrana ne yazılacağını tahmin edebilir misiniz? Evet, doğru bildiniz: 5. Çünkü dizi2, dizi1’in referansını kopyaladığı için, aslında aynı diziyi gösteriyor. Dolayısıyla, dizi2 üzerinde yaptığımız değişiklik, dizi1’i de etkiliyor.
Derin Kopyalama
Peki ya biz bunu istemiyorsak? Yani, diziyi kopyaladığımızda, orijinal diziden bağımsız bir kopya oluşturmak istiyorsak ne yapmalıyız? İşte burada derin kopyalama devreye giriyor. Derin kopyalama, dizinin değerlerini kopyalamak demektir. Yani, aslında dizinin kendisini kopyalarız. Bu şekilde, kopyaladığımız değişken veya metot, orijinal diziden bağımsız bir veriye sahip olur. Bu da demek oluyor ki, eğer kopyaladığımız değişken veya metot üzerinde bir değişiklik yaparsak, orijinal dizi etkilenmez. Örneğin, şöyle bir kod yazalım:
int[] dizi1 = new int[] {1, 2, 3}; // Bir dizi oluşturuyoruz
int[] dizi2 = new int[dizi1.Length]; // Aynı boyutta yeni bir dizi oluşturuyoruz
for (int i = 0; i < dizi1.Length; i++) // Bir döngü ile
{
dizi2[i] = dizi1[i]; // Dizinin değerlerini tek tek kopyalıyoruz
}
dizi2[0] = 5; // Kopyaladığımız dizinin ilk elemanını değiştiriyoruz
Console.WriteLine(dizi1[0]); // Orijinal dizinin ilk elemanını yazdırıyoruz
Bu kodu çalıştırdığımızda, ekrana ne yazılacağını tahmin edebilir misiniz? Evet, doğru bildiniz: 1. Çünkü dizi2, dizi1’in değerlerini kopyaladığı için, aslında farklı bir diziyi gösteriyor. Dolayısıyla, dizi2 üzerinde yaptığımız değişiklik, dizi1’i etkilemiyor.
Gördüğünüz gibi, dizileri kopyalamanın iki farklı yolu var ve bunların sonuçları da farklı oluyor. Hangi yöntemi kullanacağınız, ihtiyacınıza ve istediğiniz davranışa bağlı. Yüzeysel kopyalama daha hızlı ve daha az bellek kullanır, ancak orijinal diziyi değiştirebilir. Derin kopyalama daha yavaş ve daha fazla bellek kullanır, ancak orijinal diziyi korur.
Bu yazıda C# dizileri kopyalama yöntemini anlattım. Umarım faydalı olmuştur. Bir sonraki yazımda görüşmek üzere. Hoşçakalın.