Generische Methoden/Typen und Einschränkungen
Schreiben Sie generische Methoden und Typen und fügen Sie mit where T : … Einschränkungen hinzu (class, struct, new(), Interface/Basistyp).
Generische Methoden/Typen und Einschränkungen ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.
Überblick über Generics
Ziel: Code mit Generics sicher wiederverwenden.
- Generische Methoden und Typen
- Einschränkungen: class, struct, new(), Schnittstelle/Basistyp
- Halten Sie Beispiele klein und klar.
Generische Methode
Eine generische Methode verfügt über eine Typparameterliste, z. B. Identity<T>, und funktioniert mit vielen Typen.
using System;
// Generic method works for any T
public class Program
{
static T Identity<T>(T value)
{
// just returns what it got
return value;
}
public static void Main(string[] args)
{
int a = Identity<int>(5);
string b = Identity<string>("hi");
Console.WriteLine(a + " & " + b);
}
}
Generischer Typ
Ein generischer Typ (z. B. Box<T>) wird einmal kompiliert und mit vielen konkreten Typen verwendet.
using System;
// Simple generic type to hold a value
public sealed class Box<T>
{
private T _value;
public Box(T value) { _value = value; }
public T Get() { return _value; }
public void Set(T value) { _value = value; }
}
public class Program
{
public static void Main(string[] args)
{
Box<int> bi = new Box<int>(10);
Box<string> bs = new Box<string>("ok");
Console.WriteLine(bi.Get() + " | " + bs.Get());
}
}
Einschränkung new()
Fügen Sie where T : new() hinzu, wenn Sie innerhalb von generischem Code new T() aufrufen müssen.
using System;
// Factory that can create T with a parameterless ctor
public static class Factory
{
public static T Create<T>() where T : new()
{
return new T(); // allowed thanks to new() constraint
}
}
public sealed class Person
{
public string Name;
public Person() { Name = "Anon"; }
}
public class Program
{
public static void Main(string[] args)
{
Person p = Factory.Create<Person>();
Console.WriteLine(p.Name);
}
}
Einschränkung durch eine Schnittstelle
Beschränken Sie T auf eine Schnittstelle oder einen Basistyp, damit Sie dessen Member aufrufen können (z. B. IComparable<T>).
using System;
// Min for two values that can be compared
public static class Utils
{
public static T Min<T>(T a, T b) where T : IComparable<T>
{
return a.CompareTo(b) <= 0 ? a : b;
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(Utils.Min(5, 3)); // 3
Console.WriteLine(Utils.Min("b", "a")); // a
}
}
Einschränkungen für class/struct und Tipps
Weitere Einschränkungen:
- where T : class → nur Referenztypen
- where T : struct → nicht-nullfähige Wertetypen
- Einschränkungen kombinieren: where T : class, IDisposable, new()
- Halten Sie APIs minimal und bevorzugen Sie aus Gründen der Flexibilität Einschränkungen durch Schnittstellen.
Bedeutung der Einschränkung new()
Zusammenfassung
Zusammenfassung: Erstellen Sie generische Methoden und Typen und fügen Sie Einschränkungen hinzu, um erforderliche Member zu verwenden: Schnittstelle/Basistyp für Verhalten, class/struct für die Art und new(), um einen parameterlosen Konstruktor aufzurufen.
Häufig gestellte Fragen
Ist die Lektion „Generische Methoden/Typen und Einschränkungen“ kostenlos?
Ja — der vollständige Text von „Generische Methoden/Typen und Einschränkungen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Generische Methoden/Typen und Einschränkungen“?
Schreiben Sie generische Methoden und Typen und fügen Sie mit where T : … Einschränkungen hinzu (class, struct, new(), Interface/Basistyp). Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 3.
Wie lange dauert die Lektion „Generische Methoden/Typen und Einschränkungen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Generische Methoden/Typen und Einschränkungen
- Varianz (in/out) mit Interfaces und Delegates
- Nullable-Referenztypen (Bewusstsein) und Annotations (C#-6-Muster)