Verschachtelte Klassen in C#
-
Verschachtelte Klassen in
C#
-
Gründe für die Verwendung verschachtelter Klassen in
C#
-
Verschachtelte Klassen implementieren in
C#
In diesem Tutorial werden verschachtelte Klassen in der Programmiersprache C# vorgestellt.
Eine Klasse ist eine Blaupause oder ein Muster, das vom Benutzer definiert und zum Erstellen von Dingen verwendet wird. Es ist eine einzelne Instanz, die Methoden und Felder (Mitgliedsfunktionen, die Aktionen definieren) kombiniert.
Verschachtelte Klassen in C#
In C# kann ein Benutzer eine Klasse in einer anderen definieren, die als verschachtelte Klassen bezeichnet wird. Ihr Hauptzweck besteht darin, den Geltungsbereich der verschachtelten Klasse einzuschränken.
Im Vergleich zu regulären Klassen bieten verschachtelte Klassen die zusätzliche Möglichkeit privater Modifikatoren und Schutz. Wenn Sie diese Klasse nur innerhalb des übergeordneten Klassenkontexts aufrufen müssen, ist es normalerweise eine hervorragende Idee, sie als verschachtelte Klasse zu definieren.
Angenommen, diese Klasse wird außerhalb der Bibliothek verwendet. Für den Nutzer ist es in der Regel einfacher, sie als separate Klasse auf derselben Ebene zu definieren, unabhängig davon, ob die beiden Klassen eine konzeptionelle Beziehung haben.
Auch wenn es technisch machbar ist, eine öffentliche Klasse zu bauen, die innerhalb einer öffentlichen Elternklasse verschachtelt ist, ist dies selten eine gute Idee.
Gründe für die Verwendung verschachtelter Klassen in C#
Es gibt mehrere gute Gründe, verschachtelte Klassen zu verwenden.
- Es ist eine praktische Technik der Gruppierung von Klassen, die nur einmal verwendet wird.
- Kapselung wurde verbessert.
- Verschachtelte Klassen können Code leichter lesbar und wartungsfreundlicher machen.
- Es erleichtert die logische Klassengruppierung.
Wenn eine Klasse nur für eine andere Klasse wertvoll ist, ist es sinnvoll, sie in diese Klasse aufzunehmen, um die beiden zusammenzuhalten. Es wird durch das Verschachteln solcher Hilfsklassen vereinfacht.
Neben öffentlichen und internen Zugriffsmodifikatoren kann eine verschachtelte Klasse private und geschützte interne Zugriffsmodifikatoren enthalten.
Es gibt Fälle, in denen die Implementierung einer Schnittstelle, die von innerhalb der Klasse zurückgegeben wird, vorteilhaft ist. Dennoch sollte die Implementierung dieser Schnittstelle vollständig vor der Außenwelt verborgen bleiben.
Bevor beispielsweise yield in C# eingeführt wurde, haben wir die Enumeratorimplementierung als private Klasse in eine Sammlung eingebettet, um sie zu erstellen. Die Sammlungsmitglieder hätten einfachen Zugang, aber die Außenwelt würde die Feinheiten, wie dies gemacht wird, nicht brauchen oder sehen.
Verschachtelte Klassen implementieren in C#
Unten ist der Code, um das Konzept der verschachtelten Klasse zu veranschaulichen.
Die Klasse Program
ist die Hauptklasse des Programms, die eine öffentliche statische Hauptmethode hat. Wir haben die äußere Klasse Outside_classs
als öffentlich und eine weitere innere Klasse namens Inside_class
als öffentlich erstellt.
Außerdem haben wir zwei Methoden erstellt: innerhalb der Outside_class
und eine weitere innerhalb der Inside_class
. Wir können nicht auf die Inside_class
-Methoden von Outside_class
-Objekten zugreifen.
Um auf die darin enthaltene Methode zuzugreifen, müssen wir eine Instanz der Inside_class
erstellen.
using System;
public class Program {
public static void Main(string[] args) {
// create instance of outside class
Outside_class outinstance = new Outside_class();
outinstance.outerclassmethod();
// you can't access inside class methods from outside class objects
// create instance of inside class
Outside_class.Inside_class insideinstance = new Outside_class.Inside_class();
// accessing the method of inside class.
insideinstance.insideclassmethod();
Console.Read();
}
}
public class Outside_class {
// Method of outside class
public void outerclassmethod() {
Console.WriteLine("here is Outside class method");
}
// Inner class
public class Inside_class {
// Method of inside class
public void insideclassmethod() {
Console.WriteLine("here is Inside class Method");
}
}
}
Unten sehen Sie ein Bild des Codes, der verschachtelte Klassen mit Ausgabe verwendet.
Schon jetzt ist klar, dass die verschachtelten Klassen unseren Code gut lesbar machen. Wir können all diese Klassen miteinander kombinieren.