0Pricing
C# Academy · Lektion

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()

Kurze Frage: Welche Einschränkung ermöglicht es Ihnen, innerhalb von generischem Code ein new T() zu erstellen?

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

  1. Generische Methoden/Typen und Einschränkungen
  2. Varianz (in/out) mit Interfaces und Delegates
  3. Nullable-Referenztypen (Bewusstsein) und Annotations (C#-6-Muster)
← Zurück zu C# Academy