Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Delegates
- {
- class Program
- {
- static void Main(string[] args)
- {
- var firstStudent = new Student("Gosho Goshev", 1000, new Grade ("Good", 4 ));
- var secondStudent = new Student("Ana Ivanova", 2000, new Grade("Very Good", 5));
- //secondStudent = firstStudent.ShallowCopy();
- //secondStudent.Grade.Name = "Exellent";
- //secondStudent.Grade.Value = 6;
- // Console.WriteLine($"{firstStudent.Name} {firstStudent.ID} {firstStudent.Grade.Value}"); // Gosho Ivanov, 1000, but grade is also 6 like grade in secondStudent
- // With Deep Copy we can copy all of the value types and we create new references in the secondStudent
- secondStudent = firstStudent.DeepCopy();
- secondStudent.Grade.Name = "Exellent";
- secondStudent.Grade.Value = 6;
- Console.WriteLine($"{firstStudent.Name} {firstStudent.ID} {firstStudent.Grade.Value}"); // // Gosho Ivanov, 1000, 4 is not changed after the changes in secondStudent
- }
- public class Student
- {
- public Student(string name, int iD, Grade grade)
- {
- this.Name = name;
- this.ID = iD;
- this.Grade = grade;
- }
- public string Name { get; set; }
- public int ID { get; set; }
- public Grade Grade { get; set; }
- public Student ShallowCopy()
- {
- Student tempObject = (Student) this.MemberwiseClone();
- return tempObject;
- }
- public Student DeepCopy()
- {
- Grade gradeCopy = new Grade(this.Grade.Name, this.Grade.Value);
- Student newStudent = new Student(this.Name, this.ID, gradeCopy); // we have a constructor
- return newStudent;
- }
- }
- }
- public class Grade
- {
- public Grade(string name, int value)
- {
- this.Name = name;
- this.Value = value;
- }
- public string Name { get; set; }
- public int Value { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement