Example #1
0
        /// <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;
        }