Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Was Sind Generics? | Generics & Reflection
Fortgeschrittenes C# mit .NET
course content

Kursinhalt

Fortgeschrittenes C# mit .NET

Fortgeschrittenes C# mit .NET

1. Einführung in die Desktop-Entwicklung mit .NET
2. Interaktive GUI
3. Threading
4. Generics & Reflection

book
Was Sind Generics?

Der Begriff Generisch bedeutet "allgemein" oder "kollektiv". Im Kontext der C#-Programmierung bedeutet generisch "nicht spezifisch für einen bestimmten (Daten-)Typ".

Generika sind eine Möglichkeit, unserem Code Flexibilität zu verleihen und ihn robuster zu machen. Durch das Erstellen einer generischen Klasse können wir die Datentypen ihrer Felder, Eigenschaften, Methodenparameter oder sogar den Methodenrückgabewert als unentschieden oder generisch belassen, und sie können später durch jeden Datentyp gefüllt werden, der zum Zeitpunkt der Objekterstellung entschieden werden kann. Wir können uns Beispiele ansehen, um dieses Konzept besser zu verstehen.

Der System.Collections.Generic-Namensraum enthält einige auf Generika basierende Sammlungsklassen wie Listen und Wörterbücher. Wir haben bereits die Syntax zum Erstellen und Verwenden von Listen und Wörterbüchern betrachtet.

Folgendes ist die Syntax zum Erstellen eines neuen Listenobjekts:

cs

index

copy
1
new List<datatype>();

Ähnlich ist die Syntax zum Erstellen eines neuen Dictionary-Objekts:

cs

index

copy
1
new Dictionary<datatype1, datatype2>();

Wir wissen bereits, dass die grundlegende Syntax zum Erstellen eines neuen Objekts einer Klasse new ClassName(arg1, …); ist. Im Fall von List und Dictionary gibt es jedoch Datentypen, die in spitze Klammern (<, >) eingeschlossen sind.

Dies liegt daran, dass sowohl List als auch Dictionary generische Typen oder Klassen sind und daher die Flexibilität bieten, Objekte zu erstellen, die jeden Datentyp unterstützen können. Daher können wir Listen und Dictionaries erstellen, die Werte jedes Datentyps speichern können, einschließlich int, float, double, bool oder sogar Objekte unserer eigenen Klassen:

cs

index

copy
1234567891011
class ExampleClass { int value; public ExampleClass(int value) { this.value = value; } } var exampleList = new List<ExampleClass>(); var exampleDict = new Dictionary<string, ExampleClass>();

Es wäre mühsam und ineffizient gewesen, wenn die List- und Dictionary-Klassen ohne Generics implementiert worden wären. Vielleicht hätte es mehrere verschiedene Klassen gegeben, um verschiedene Datentypen zu unterstützen, oder eine komplizierte Logik innerhalb einer einzigen Klasse, die die Unterstützung mehrerer Datentypen ermöglicht, auf Kosten der Typsicherheit, was das Risiko von Laufzeitfehlern erhöht.

Tatsächlich gibt es eine ältere Version der List-Klasse, die immer noch im System.Collections-Namespace verfügbar ist, bekannt als ArrayList, die eine nicht-generische Klasse ist und daher anfällig für Laufzeitfehler ist. In der Microsoft-Dokumentation wird davon abgeraten, ArrayList zu verwenden, jedoch ist sie in den neuesten Versionen von C# immer noch enthalten, um die Abwärtskompatibilität mit älteren Programmen zu gewährleisten.

Generics bieten eine elegante Methode, um mehrere Datentypen aus einer einzigen Klasse zu unterstützen, wodurch die Wiederverwendbarkeit des Codes, die Effizienz und die Typsicherheit verbessert werden.

Die Datentyp(en), die wir zwischen den spitzen Klammern übergeben, werden als generische Typ-Parameter oder einfach Typ-Parameter bezeichnet.

1. Was ist der Hauptzweck von Generics in der Programmierung?

2. Welche dieser ist KEIN generischer Typ?

Was ist der Hauptzweck von **Generics** in der Programmierung?

Was ist der Hauptzweck von Generics in der Programmierung?

Wählen Sie die richtige Antwort aus

Welche dieser ist **KEIN** generischer Typ?

Welche dieser ist KEIN generischer Typ?

Wählen Sie einige richtige Antworten aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
We're sorry to hear that something went wrong. What happened?
some-alt