static void PersonDrucken(Person person)
        {
            // slicing Problem, Member der Unterklasse werden abgeschnitten

            if (person == null)
            {
                throw new Exception();
            }

            Console.Write(person.Vorname + " " + person.Nachname + " " + person.Geburtstag.ToShortDateString());
            if (person is Studierender)
            {
                // Studierender studi = person as Studierender;
                // as-Operator: Referenz als Studierender wenn Objekt Studierender ist, sonst null
                Studierender studi = (Studierender)person;
                // explizite Konvertierung: Referenz als Studierender wenn Objekt Studierender ist, sonst Ausnahme
                Console.Write(" Matrikelnummer: " + studi.Matrikelnummer);
            }
            if (person is StudentischenHilfskraft)
            {
                StudentischenHilfskraft sh = person as StudentischenHilfskraft;
                Console.WriteLine(" Arbeitsvertrag: " + sh.Arbeitsvertragsnummer);
            }
            Console.WriteLine();
        }
        static void Main()
        {
            Person p = new Person();

            p.Vorname    = "Egon";
            p.Nachname   = "Meier";
            p.Geburtstag = new DateTime(1990, 5, 23);
            PersonDrucken(p);

            Termin t = new Termin();

            t.Gesprächspartner = p;
            t.Uhrzeit          = new DateTime(2019, 4, 10, 1, 0, 0);
            // PersonDrucken(t); // <-- geht nicht, C# ist string typisiert
            Console.WriteLine(t.Uhrzeit.ToString());
            PersonDrucken(t.Gesprächspartner);

            Studierender s = new Studierender();

            s.Vorname        = "Wille";
            s.Nachname       = "Schmitz";
            s.Geburtstag     = new DateTime(1993, 5, 17);
            s.Matrikelnummer = "61155";
            PersonDrucken(s); // <-- Prinzip der Ezsetzbarkeit ein Studierender ist auch eine Person

            StudentischenHilfskraft sh = new StudentischenHilfskraft();

            sh.Vorname               = "Franz";
            sh.Nachname              = "Sauer";
            sh.Geburtstag            = new DateTime(1995, 12, 15);
            sh.Matrikelnummer        = "65421";
            sh.Arbeitsvertragsnummer = "58431";
            PersonDrucken(sh);

            Console.ReadKey();
        }