public static void DeepCopyExample() { Console.WriteLine("Deep Kopyalama Örneği"); Console.WriteLine(); Ozellikler oz = new Ozellikler() { UrunSayi = 100, UrunBeden = "L-M-S", UrunRenk = "Kırmızı-Mavi" }; oz.fabrika = new Fabrika() { Marka = "Defacto" }; Console.WriteLine("oz nesnesi yaratıldıktan sonra:"); Console.WriteLine(); Console.WriteLine("Oz:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz.fabrika.Marka, oz.UrunSayi, oz.UrunBeden, oz.UrunRenk); Ozellikler oz2 = oz.DeepCopy();//Deep olarak kopyalandı. //Deep kopyalamanın avantajı ise kopyalandıktan sonra dışardan gelen referans sadece kopyalanan için kullanılabilir olur. //Böylece referans karmaşıklığı ortadan kalkar. Console.WriteLine("oz'u oz2 ye shallow copy yaptıktan sonra:"); Console.WriteLine(); oz2.UrunSayi = 300; oz2.UrunBeden = "XL-L-M-S"; oz2.UrunRenk = "Beyaz-Siyah"; oz2.fabrika.Marka = "Koton"; Console.WriteLine("E2:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz2.fabrika.Marka, oz2.UrunSayi, oz2.UrunBeden, oz2.UrunRenk); Console.WriteLine(); Console.WriteLine("Değişikliklerden sonra:"); Console.WriteLine(); Console.WriteLine("E1:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz.fabrika.Marka, oz.UrunSayi, oz.UrunBeden, oz.UrunRenk); Console.WriteLine(); Console.WriteLine("E2:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz2.fabrika.Marka, oz2.UrunSayi, oz2.UrunBeden, oz2.UrunRenk); }
public static void ShallowCopyExample() { Console.WriteLine("Shallow Kopyalama Örneği"); Console.WriteLine(); Ozellikler oz = new Ozellikler() { UrunSayi = 100, UrunBeden = "L-M-S", UrunRenk = "Kırmızı-Mavi" }; oz.fabrika = new Fabrika() { Marka = "Defacto" }; Console.WriteLine("oz nesnesi yaratıldıktan sonra:"); Console.WriteLine(); Console.WriteLine("Oz:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz.fabrika.Marka, oz.UrunSayi, oz.UrunBeden, oz.UrunRenk); Ozellikler oz2 = oz.Clone();//Shallow olarak kopyalandı. //Shallow kopyalamanın dezavantajı eğer veri referans tipinde ise kopyalandıktan sonra her iki nesnede aynı referans adresini gösterecektir. //Bu yüzden referans tipinde kopyalanan veri değiştirilse bile her iki nesne içinde veri aynı olacaktır. Console.WriteLine("oz'u oz2 ye shallow copy yaptıktan sonra:"); Console.WriteLine(); oz2.UrunSayi = 300; oz2.UrunBeden = "XL-L-M-S"; oz2.UrunRenk = "Beyaz-Siyah"; oz2.fabrika.Marka = "Koton"; Console.WriteLine("E2:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz2.fabrika.Marka, oz2.UrunSayi, oz2.UrunBeden, oz2.UrunRenk); Console.WriteLine(); Console.WriteLine("Değişikliklerden sonra:"); Console.WriteLine(); Console.WriteLine("E1:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz.fabrika.Marka, oz.UrunSayi, oz.UrunBeden, oz.UrunRenk); Console.WriteLine(); Console.WriteLine("E2:\nUrun Marka: {0}\nUrun Sayi: {1}\nUrun Beden: {2}\nUrun Renk: {3}", oz2.fabrika.Marka, oz2.UrunSayi, oz2.UrunBeden, oz2.UrunRenk); }