public static void Main()
        {
            var p = new Person() { Name = "Luke", Age = 50 };
            
            WriteLine(string.Format("{0} is {1} year{{s}} old", p.Name, p.Age));
            
            WriteLine($"{p.Name} is {p.Age} year{{s}} old");
			WriteLine($"{p.Name,20} is {p.Age:D3} year{{s}} old");
			WriteLine($"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s")} old");
        }
        public static void Main()
        {
            // Use ?. to access the Name property
            Person person = null;
            Console.WriteLine("person?.Name: {0}", person?.Name ?? "null");
            List<Person> persons = null;
            Console.WriteLine("persons?[0].Name: {0}", persons?[0].Name ?? "null");

            person = new Person() { Name = "Luke" };
            Console.WriteLine("person?.Name: {0}", person?.Name ?? "null");
            persons = new List<Person>() { person };
            Console.WriteLine("persons?[0].Name: {0}", persons?[0].Name ?? "null");

            // Use ?. to raise the PropertyChanged event
            Console.WriteLine();
            person.PropertyChanged += PersonPropertyChanged;
            person.Name = "Han";
        }