static void Main(string[] args) { Pupil pupil1 = new Pupil("pupil1"); Pupil pupil2 = (Pupil)pupil1.Clone(); Pupil pupil3 = pupil1.GlebokaKopia(); if (Object.ReferenceEquals(pupil1, pupil2)) { Console.WriteLine("Obiekty klasy Pupil po płytkiej kopii odwołują się do tego samego obiektu."); } else { Console.WriteLine("Obiekty klasy Pupil po płytkiej kopii nie odwołują się do tego samego obiektu."); } if (Object.ReferenceEquals(pupil1, pupil3)) { Console.WriteLine("Obiekty klasy Pupil po głębokiej kopii odwołują się do tego samego obiektu.\n"); } else { Console.WriteLine("Obiekty klasy Pupil po głębokiej kopii nie odwołują się do tego samego obiektu.\n"); } Pupil pupilek1 = new Pupil("pupilek1"); List <Pupil> pupilki1 = new List <Pupil>(); pupilki1.Add(pupilek1); Classroom classroom1 = new Classroom("classroom1", pupilki1); Classroom classroom2 = (Classroom)classroom1.Clone(); Classroom classroom3 = classroom1.GlebokaKopia(); Pupil pobranyPupil1 = classroom1.GetFirstPupil(); Pupil pobranyPupil2 = classroom2.GetFirstPupil(); Pupil pobranyPupil3 = classroom3.GetFirstPupil(); if (Object.ReferenceEquals(pobranyPupil1, pobranyPupil2)) { Console.WriteLine("Obiekty klasy Pupil z klasy Classroom po płytkiej kopii odwołują się do tego samego obiektu."); } else { Console.WriteLine("Obiekty klasy Pupil z klasy Classroom po płytkiej kopii nie odwołują się do tego samego obiektu."); } if (Object.ReferenceEquals(pobranyPupil1, pobranyPupil3)) { Console.WriteLine("Obiekty klasy Pupil z klasy Classroom po głębokiej kopii odwołują się do tego samego obiektu.\n"); } else { Console.WriteLine("Obiekty klasy Pupil z klasy Classroom po głębokiej kopii nie odwołują się do tego samego obiektu.\n"); } Pupil pupilek2 = new Pupil("pupilek2"); List <Pupil> pupilki2 = new List <Pupil>(); pupilki2.Add(pupilek2); Classroom klasa1 = new Classroom("klasa1", pupilki2); List <Classroom> klasy = new List <Classroom>(); klasy.Add(klasa1); School school1 = new School("school1", klasy); School school2 = (School)school1.Clone(); School school3 = school1.GlebokaKopia(); Classroom pobranaKlasa1 = school1.GetFirstClassroom(); Classroom pobranaKlasa2 = school2.GetFirstClassroom(); Classroom pobranaKlasa3 = school3.GetFirstClassroom(); Pupil pobranyPupilek1 = pobranaKlasa1.GetFirstPupil(); Pupil pobranyPupilek2 = pobranaKlasa2.GetFirstPupil(); Pupil pobranyPupilek3 = pobranaKlasa3.GetFirstPupil(); if (Object.ReferenceEquals(pobranaKlasa1, pobranaKlasa2)) { Console.WriteLine("Obiekty klasy Classroom z klasy School po płytkiej kopii odwołują się do tego samego obiektu."); } else { Console.WriteLine("Obiekty klasy Classroom z klasy School po płytkiej kopii nie odwołują się do tego samego obiektu."); } if (Object.ReferenceEquals(pobranaKlasa1, pobranaKlasa3)) { Console.WriteLine("Obiekty klasy Classroom z klasy School po głębokiej kopii odwołują się do tego samego obiektu.\n"); } else { Console.WriteLine("Obiekty klasy Classroom z klasy School po głębokiej kopii nie odwołują się do tego samego obiektu.\n"); } if (Object.ReferenceEquals(pobranyPupilek1, pobranyPupilek2)) { Console.WriteLine("Obiekty klasy Pupil z klasy School po płytkiej kopii odwołują się do tego samego obiektu."); } else { Console.WriteLine("Obiekty klasy Pupil z klasy School po płytkiej kopii nie odwołują się do tego samego obiektu."); } if (Object.ReferenceEquals(pobranyPupilek1, pobranyPupilek3)) { Console.WriteLine("Obiekty klasy Pupil z klasy School po głębokiej kopii odwołują się do tego samego obiektu."); } else { Console.WriteLine("Obiekty klasy Pupil z klasy School po głębokiej kopii nie odwołują się do tego samego obiektu."); } Console.ReadKey(); }