/// <summary> /// Using class's statis methods, instance methods, delegates, operator overload /// </summary> private void workWithPersonClass( ) { int bornNumber = 0; string bornAlert = ""; APerson.logProcreate += (APerson p1, APerson p2) => bornAlert += $"{DateTime.Now.TimeOfDay}\n"; APerson.logProcreate += (APerson p1, APerson p2) => bornAlert += $"{++bornNumber}) {p1.Name} and {p2.Name} made a baby\n"; APerson david = new APerson { Name = "David", DateOfBirth = new DateTime(1995, 3, 6) }; APerson kate = new APerson { Name = "Kate", DateOfBirth = new DateTime(1996, 4, 15) }; APerson molly = new APerson { Name = "Molly", DateOfBirth = new DateTime(1994, 2, 28) }; APerson baby1 = APerson.Procreate(david, kate); APerson baby2 = david.ProcreateWith(molly); APerson baby3 = david * molly; APerson baby4 = kate * david; string getPersonInfo(APerson p) => $"{p.Name} has {p.Children.Count} {(p.Children.Count == 1 ? "child" : "children")}\n"; string output = getPersonInfo(david) + getPersonInfo(kate) + getPersonInfo(molly); foreach (var child in david.Children) { output += $"\n{david.Children.IndexOf(child) + 1}) {child.Name}"; } tbTopLeft.Text = output; tbTopRight.Text = bornAlert; }