static void Main() { Payment phone = new Payment("Samsung S6", 3500m); Payment monitor = new Payment("Monitor Sony", 149.99m); Customer ivan = new Customer("Ivan", "Petrov", "Ivanov", 9305054476, "Borisova 34", "0883-43-43-12", "*****@*****.**", new List<Payment>() { phone, monitor }, CustomerType.Regular); // correct copy Customer ivanCopy = (Customer)ivan.Clone(); ivanCopy.FirstName = "Ivancho"; ivanCopy.Payments.Add(new Payment("Car audi A4", 5000m)); Console.WriteLine(ivan); Console.WriteLine(ivanCopy); Console.WriteLine("ivanCopy == ivan : {0}", ivanCopy == ivan); Console.WriteLine("ivan.Equals(ivanCopy) : {0}", ivan.Equals(ivanCopy)); Console.WriteLine("Object.ReferenceEquals(ivan, ivanCopy) : {0}", Object.ReferenceEquals(ivan, ivanCopy)); Console.WriteLine("\n\n"); // incorrect copy ivanCopy = ivan; ivan.FirstName = "Ivancho"; ivanCopy.Payments.Add(new Payment("Car audi A4", 5000m)); Console.WriteLine(ivan); Console.WriteLine(ivanCopy); Console.WriteLine("ivanCopy == ivan : {0}", ivanCopy == ivan); Console.WriteLine("ivan.Equals(ivanCopy) : {0}", ivan.Equals(ivanCopy)); Console.WriteLine("Object.ReferenceEquals(ivan, ivanCopy) : {0}", Object.ReferenceEquals(ivan, ivanCopy)); }
static void Main() { Payment hdd = new Payment("WD HDD 2TB", 189.99m); Payment mouse = new Payment("Mouse", 9.90m); Customer geek = new Customer("Bill", "Gates", 8712013812, Enum.CustomerType.Diamond, hdd, mouse); Payment vacation = new Payment("Vacation", 1250); Customer smart = new Customer("Katya", "Georgieva", "Tomova", 9203131111, Enum.CustomerType.OneTime, "Sofia", null, null, vacation); Customer geekCopy = (Customer)geek.Clone(); geek.AddNewPayment(vacation); Console.WriteLine(geek); Console.WriteLine(geekCopy); Console.WriteLine(geek == smart); Console.WriteLine(geek == geekCopy); Console.WriteLine(Customer.Equals(geek, geekCopy)); Console.WriteLine(); Customer[] customers = new[] { geek, geekCopy, smart }; Array.Sort(customers); Console.WriteLine(string.Join("\n", customers.ToList())); }