C# LanguageGénériques

Syntaxe

  • 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; } }

Paramètres

Paramètres) La description
LA TÉLÉ Tapez les espaces réservés pour les déclarations génériques

Remarques

Les génériques en C # sont pris en charge jusqu'au moment de l'exécution: les types génériques construits avec C # verront leur sémantique générique préservée même après la compilation en CIL .

Cela signifie que, en C #, il est possible de réfléchir aux types génériques et de les voir tels qu'ils ont été déclarés ou de vérifier si un objet est une instance de type générique, par exemple. Ceci est en contraste avec l' effacement de type , où les informations de type génériques sont supprimées lors de la compilation. Cela contraste également avec l'approche par modèle des génériques, où plusieurs types génériques concrets deviennent de multiples types non génériques à l'exécution, et toutes les métadonnées requises pour instancier davantage les définitions de type génériques d'origine sont perdues.

Soyez prudent, cependant, lorsque vous réfléchissez sur des types génériques: les noms des types génériques seront modifiés lors de la compilation, en remplaçant les noms entre parenthèses et les paramètres de type par un backtick suivi du nombre de paramètres de type génériques. Ainsi, un Dictionary<TKey, Tvalue> sera traduit en Dictionary`2 .

Génériques Exemples Liés