C # Generics (Français)
Générique signifie la forme générale, pas spécifique. En C#, Générique signifie non spécifique à un type de données particulier.
C# vous permet de définir des classes génériques, des interfaces, des classes abstraites, des champs,des méthodes, des méthodes statiques, des propriétés, des événements, des délégués et des opérateurs en utilisant le paramètre type et sans le type de données spécifique. Un paramètre de type est un espace réservé pour un type particulier spécifié lors de la création d’une instance du type générique.
un type générique est déclaré en spécifiant un paramètre de type entre crochets après un nom de type, par exemple, TypeName<T>
où T
est un paramètre de type.
classe générique
Les classes génériques sont définies à l’aide d’un paramètre type entre crochets après le nom de la classe. Ce qui suit définit une classe générique.
ci-Dessus, la balise DataStore
est une classe générique., T
est appelé paramètre de type, qui peut être utilisé comme type de champs, de propriétés, de paramètres de méthode, de types de retour et de délégués dans la classe DataStore
. Par exemple, Data
est une propriété générique car nous avons utilisé un paramètre de type T
comme type au lieu du type de données spécifique.
T
comme un paramètre de type. Vous pouvez donner n’importe quel nom à un paramètre de type., Généralement, T
est utilisé lorsqu’il n’y a qu’un seul paramètre de type. Il est recommandé d’utiliser un plus lisible type de nom de paramètre selon l’exigence de la forme TSession
, TKey
, TValue
etc. En savoir plus sur les directives de nommage des paramètres de type Vous pouvez également définir plusieurs paramètres de type séparés par une virgule.
instanciation de la classe générique
Vous pouvez créer une instance de classes génériques en spécifiant un type réel entre crochets., Ce qui suit crée une instance de la classe générique DataStore
.
ci-Dessus, nous avons spécifié le string
type dans les crochets lors de la création d’une instance. Donc, T
sera remplacé par un string
endroit T
est utilisé dans l’ensemble de la classe au moment de la compilation. Par conséquent, le type de Data
propriété serait un string
.
la figure suivante illustre le fonctionnement des génériques.,
Vous pouvez affecter une chaîne de valeur de la balise Data
propriété. Essayer d’attribuer des valeurs autres que string entraînera une erreur de compilation.
Vous pouvez spécifier les types de données différents pour les différents objets, comme indiqué ci-dessous.
Classe Générique Caractéristiques
- Une classe générique accroît les possibilités de réutilisation. Plus les paramètres de type signifient plus il devient réutilisable., Cependant, trop de généralisation rend le code difficile à comprendre et à maintenir.
- Une classe générique peut être une classe de base pour d’autres classes génériques ou non génériques ou des classes abstraites.
- Une classe générique peut être dérivée d’autres interfaces, classes ou classes abstraites génériques ou non génériques.
Générique Champs
Une classe générique peut inclure générique champs. Cependant, il ne peut pas être initialisé.
L’exemple suivant déclare un generic array.,
Méthodes Génériques
Une méthode déclarée avec le type de paramètres pour son type de retour ou de paramètres est appelée une méthode générique.
ci-Dessus, la balise AddorUpdate()
et le GetData()
méthodes sont des méthodes génériques. Le type de données réel du paramètreitem
sera spécifié au moment de l’instanciation de la classeDataStore<T>
, comme indiqué ci-dessous.,
le type de paramètre générique peut être utilisé avec plusieurs paramètres avec ou sans paramètres non génériques et type de retour. Les éléments suivants sont une surcharge de méthode générique valide.
Une classe non générique peut inclure des méthodes génériques en spécifiant un paramètre type entre crochets avec le nom de la méthode, comme indiqué ci-dessous.
avantages des génériques
- Les génériques augmentent la réutilisabilité du code. Vous n’t besoin d’écrire du code pour gérer différents types de données.
- Les génériques sont sûrs., Vous obtenez des erreurs de compilation si vous essayez d’utiliser un type de données différent de celui spécifié dans la définition.
- Generic a un avantage de performance car il supprime les possibilités de boxe et de déballage.