public static void ZugriffTest()
        {
            ZugriffKlasse basisKlasse = new ZugriffKlasse();

            Console.WriteLine($"hat Zugriff auf basisKlasse.{basisKlasse.publicString}");

            Console.WriteLine($"hat keinen Zugriff auf basisKlasse.privateString");
            Console.WriteLine($"hat keinen Zugriff auf basisKlasse.protectedString");
            Console.WriteLine($"hat keinen Zugriff auf basisKlasse.internalString");
            Console.WriteLine($"hat keinen Zugriff auf basisKlasse.protectedInternalString");
            Console.WriteLine($"hat keinen Zugriff auf basisKlasse.privateProtectedString");
        }
        static void Main(string[] args)
        {
            //public => ueberall
            //private => innerhalb der selben Klasse
            //protected => innerhalb der selben Klasse oder innerhalb abgeleiteter Klassen
            //internal => innerhalb der aktuellen Assembly
            //protected internal => innerhalb der aktuellen Assembly oder abgeleitet in anderer Assembly
            //private protected => innerhalb der selben Klasse oder innerhalb einer abgeleiteten Klasse in der aktuellen Assembly

            Console.WriteLine("Zugriff innerhalb der Basisklasse:");
            ZugriffKlasse basisKlasse = new ZugriffKlasse();

            basisKlasse.ZugriffTest();
            //hat Zugriff auf publicString
            //hat Zugriff auf privaterString
            //hat Zugriff auf protectedString
            //hat Zugriff auf internalString
            //hat Zugriff auf protectedInternalString
            //hat Zugriff auf privateProtectedString

            Console.WriteLine();
            Console.WriteLine("Zugriff innenhalb einer abgeleiteten Klasse:");
            GeerbteZugriffKlasse geerbteKlasse = new GeerbteZugriffKlasse();

            geerbteKlasse.GeerbteZugriffTest();
            //hat Zugriff auf publicString
            //hat Zugriff auf protectedString
            //hat Zugriff auf internalString
            //hat Zugriff auf protectedInternalString
            //hat Zugriff auf privateProtectedString
            //hat keinen Zugriff auf privateString

            Console.WriteLine();
            Console.WriteLine("Zugriff innenhalb einer abgeleiteten Klasse in einer anderern Assembly:");
            GeerbteZugriffKlasseZweiteAssembly geerbteKlasseZweiteAssembly = new GeerbteZugriffKlasseZweiteAssembly();

            geerbteKlasseZweiteAssembly.GeerbteZugriffZweiteAssemblyTest();
            //hat Zugriff auf publicString
            //hat Zugriff auf protectedString
            //hat Zugriff auf protectedInternalString
            //hat keinen Zugriff auf privateString
            //hat keinen Zugriff auf internalString
            //hat keinen Zugriff auf privateProtectedString

            Console.WriteLine();
            Console.WriteLine("Zugriff durch Objekt innerhalb der gleichen Assembly:");
            ZugriffTestGleicheAssembly.ZugriffTest();
            //hat Zugriff auf basisKlasse.publicString
            //hat Zugriff auf basisKlasse.internalString
            //hat Zugriff auf basisKlasse.protectedInternalString
            //hat keinen Zugriff auf basisKlasse.privateString
            //hat keinen Zugriff auf basisKlasse.protectedString
            //hat keinen Zugriff auf basisKlasse.privateProtectedString

            Console.WriteLine();
            Console.WriteLine("Zugriff durch Objekt innerhalb einer anderen Assembly:");
            ZugriffTestZweiteAssembly.ZugriffTest();
            //hat Zugriff auf basisKlasse.publicString
            //hat keinen Zugriff auf basisKlasse.privateString
            //hat keinen Zugriff auf basisKlasse.protectedString
            //hat keinen Zugriff auf basisKlasse.internalString
            //hat keinen Zugriff auf basisKlasse.protectedInternalString
            //hat keinen Zugriff auf basisKlasse.privateProtectedString

            Console.ReadLine();
        }