Looking for c# Keywords? Try Ask4Keywords

C# LanguageGenerics


Syntax

  • public void SomeMethod <T> () { }
  • public void SomeMethod<T, V>() { }
  • public T SomeMethod<T>(IEnumerable<T> sequence) { ... }
  • public void SomeMethod<T>() where T : new() { }
  • public void SomeMethod<T, V>() where T : new() where V : struct { }
  • public void SomeMethod<T>() where T: IDisposable { }
  • public void SomeMethod<T>() where T: Foo { }
  • public class MyClass<T> { public T Data {get; set; } }

Parameter

Parameter Beschreibung
FERNSEHER Geben Sie Platzhalter für generische Deklarationen ein

Bemerkungen

Generics in C # werden bis zur Laufzeit vollständig unterstützt: Generische Typen, die mit C # erstellt wurden, behalten ihre generische Semantik selbst nach der Kompilierung in CIL .

Dies bedeutet effektiv, dass es in C # möglich ist, generische Typen zu reflektieren und sie so zu sehen, wie sie deklariert wurden, oder zu überprüfen, ob ein Objekt beispielsweise eine Instanz eines generischen Typs ist. Dies steht im Gegensatz zur Typlöschung , bei der generische Typinformationen während des Kompilierens entfernt werden. Dies steht auch im Gegensatz zum Vorlagenansatz für Generika, bei dem mehrere konkrete generische Typen zur Laufzeit zu mehreren nicht generischen Typen werden und alle Metadaten, die zur weiteren Instanziierung der ursprünglichen generischen Typdefinitionen erforderlich sind, verloren gehen.

Seien Sie jedoch vorsichtig, wenn Sie über generische Typen nachdenken: Die Namen generischer Typen werden beim Kompilieren geändert. Dabei werden die spitzen Klammern und die Namen der Typparameter durch ein Backtick gefolgt von der Anzahl der generischen Typparameter ersetzt. Daher wird ein Dictionary<TKey, Tvalue> in Dictionary`2 übersetzt.

Generics Verwandte Beispiele