Table des matières
Types génériques
Méthodes génériques
Example
Output
Maison développement back-end Tutoriel C#.Net Expliquer comment fonctionnent les génériques en C#

Expliquer comment fonctionnent les génériques en C#

Aug 27, 2023 pm 11:45 PM

解释泛型在 C# 中的工作原理

Les génériques ont été ajoutés dans la version 2.0 de C# et sont l'un des concepts les plus importants du langage. Ils vous permettent d'écrire du code réutilisable et hautes performances, de type sécurisé au moment de la compilation. Les génériques vous permettent d'utiliser un type dans votre code sans connaître le type au préalable.

Les génériques sont utilisés à de nombreux endroits dans .NET, notamment les collections, les délégués et le code asynchrone. Avec les génériques, vous n'avez pas besoin de connaître la taille de la collection à l'avance et vous pouvez utiliser des génériques avec n'importe quel type d'élément, même avec des types de données personnalisés spécifiques à votre code. C# prend en charge les types génériques (classes, interfaces, etc.) et les méthodes génériques.

Dans les génériques, vous avez des paramètres de type et des paramètres de type. Ceci est similaire à une méthode comportant des paramètres que vous pouvez transmettre à la méthode.

Types génériques

La syntaxe de déclaration d'un type générique se compose de paramètres de type entourés de crochets angulaires. Le nom du type. Par exemple, Locator est la classe générique dans l'exemple ci-dessous.

public class Locator<T>
{

}
Copier après la connexion

Pour créer une instance de Locator, utilisez le nouveau mot-clé suivi du nom de la classe. Cependant, vous pouvez spécifier le type réel à passer en paramètre au lieu de T. L'exemple suivant transmet un type de chaîne en tant que paramètre.

var stringLocator = new Locator<string>();
Copier après la connexion

Vous pouvez utiliser des paramètres de type (T) sur les méthodes de classe, comme indiqué dans l'exemple ci-dessous.

public class Locator{
   public IList Items { get; set; }

      public T Locate(int index){
      return Items[index];
   }
}
var stringLocator = new Locator<string>();
string item = stringLocator.Locate(2);
Copier après la connexion

Un autre avantage des génériques est l'IntelliSense fourni par l'éditeur. Lorsque vous tapez stringLocator.Locate(4) dans Visual Studio ou VS Code et que vous survolez le nom de la méthode, cela indique qu'elle renvoie une chaîne au lieu d'un T. Le compilateur générera une erreur si vous essayez d'attribuer le résultat à un type autre qu'une chaîne. Par exemple, lorsque

// Error: Cannot implicitly convert type &#39;string&#39; to &#39;int&#39; [c-sharp]csharp(CS0029)
int item = stringLocator.Locate(2);
Copier après la connexion

hérite d'un type de base générique ou d'une interface générique, le type générique peut utiliser des paramètres de type comme arguments de type. Le type générique LinkedList implémente l'interface générique IEnumerable ainsi que d'autres interfaces.

public class LinkedList<T> : IEnumerable<T>
Copier après la connexion

Méthodes génériques

Une méthode générique est simplement une méthode qui déclare un paramètre de type que vous pouvez utiliser dans une méthode et l'utiliser comme paramètre et type de retour. Dans l'exemple suivant, Swap est une méthode générique qui prend deux paramètres de type T et renvoie une instance de T .

public class Swapper{
   public T Swap<T>(T first, T second){
      T temp = first;
      first = second;
      second = temp;
      return temp;
   }
}
Copier après la connexion

Comme les types génériques, lorsque vous appelez une méthode générique, elle renverra une variable fortement typée.

var swapper = new Swapper();
int result = swapper.Swap<int>(5, 3);
Copier après la connexion

peut avoir plusieurs paramètres généraux. La classe Dictionary dans l'espace de noms System.Collections.Generic a deux paramètres de type, key et value.

public class Dictionary<TKey, TValue>
Copier après la connexion

Enfin, il est important de comprendre ce qui est universel. Pour les types, tout peut être générique sauf les énumérations. Ceux-ci incluent -

  • Classes
  • Structures
  • Interfaces
  • Délégués

Pour les membres de type, seules les méthodes et les types imbriqués peuvent être génériques. Les membres suivants ne peuvent pas être génériques -

  • Fields
  • Properties
  • Indexer
  • Constructor
  • Events
  • Terminator

Example

Live Demo

using System;
using System.Collections.Generic;
class Program{
   static void Main(){
      var stringLocator = new Locator<string>(){
         Items = new string[] { "JavaScript", "CSharp", "Golang" }
      };
      string item = stringLocator.Locate(1);
      Console.WriteLine(item); // CSharp
      var swapper = new Swapper();
      int a = 5, b = 3;
      int result = swapper.Swap<int>(ref a, ref b);
      Console.WriteLine($"a = {a}, b = {b}");
   }
}
public class Locator<T>{
   public IList<T> Items { get; set; }
   public T Locate(int index){
      return Items[index];
   }
}
public class Swapper{
   public T Swap<T>(ref T first, ref T second){
      T temp = first;
      first = second;
      second = temp;
      return temp;
   }
}
Copier après la connexion

Output

CSharp
a = 3, b = 5
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ajouter le compilateur C de niveau suivant Comment ajouter le compilateur C de niveau suivant Mar 03, 2025 pm 05:44 PM

Cet article explique comment créer de nouvelles caractères en C en C en utilisant la séquence \ n Escape dans printf et met des fonctions. Il détaille les fonctionnalités et fournit des exemples de code démontrant son utilisation pour les ruptures de ligne en sortie.

Quelles sont les alternatives à Null en C Quelles sont les alternatives à Null en C Mar 03, 2025 pm 05:37 PM

Cet article explore les défis des déréférences du pointeur nul dans C. Il soutient que le problème n'est pas nul lui-même, mais son utilisation abusive. L'article détaille les meilleures pratiques pour prévenir les déréférences, y compris les contrôles de pré-déréférence, le pointeur initiali

Quel compilateur de langue C est le meilleur? Quel compilateur de langue C est le meilleur? Mar 03, 2025 pm 05:39 PM

Cet article guide les débutants sur le choix d'un compilateur C. Il fait valoir que le CCG, en raison de sa facilité d'utilisation, de sa large disponibilité et de ses vastes ressources, est la meilleure pour les débutants. Cependant, il compare également GCC, Clang, MSVC et TCC, mettant en évidence leur différenciation

Null est-il toujours important dans la programmation moderne dans le langage C? Null est-il toujours important dans la programmation moderne dans le langage C? Mar 03, 2025 pm 05:35 PM

Cet article met l'accent sur l'importance continue de Null dans la programmation C moderne. Malgré les progrès, NULL reste crucial pour la gestion explicite du pointeur, empêchant les défauts de segmentation en marquant l'absence d'une adresse mémoire valide. Meilleur prac

Quelles sont les versions Web des compilateurs de langage C? Quelles sont les versions Web des compilateurs de langage C? Mar 03, 2025 pm 05:42 PM

Cet article passe en revue les compilateurs C en ligne pour les débutants, en se concentrant sur la facilité d'utilisation et les capacités de débogage. Onlinegdb et Rep.Il sont mis en évidence pour leurs interfaces conviviales et leurs outils de débogage utiles. Autres options comme Programiz et Compil

Méthode de copie du code par compilateur de langage C Méthode de copie du code par compilateur de langage C Mar 03, 2025 pm 05:43 PM

Cet article traite de la copie de code efficace dans les Cides. Il souligne que la copie est une fonction IDE, pas une fonctionnalité de compilateur, et détaille des stratégies pour une efficacité améliorée, y compris l'utilisation d'outils de sélection IDE, le pliage de code, la recherche / remplacer, Templa

CLANGE COMMANDE COMMANDE C compilateur de langage C Résumé du site Web officiel CLANGE COMMANDE COMMANDE C compilateur de langage C Résumé du site Web officiel Mar 03, 2025 pm 05:41 PM

Cet article compare les plateformes de programmation C en ligne, mettant en évidence les différences de fonctionnalités telles que les outils de débogage, les fonctionnalités IDE, la conformité standard et les limites de mémoire / d'exécution. Il soutient que la "meilleure" plate-forme dépend des besoins des utilisateurs,

T Tutoriel d'installation du compilateur de langue C (version informatique) T Tutoriel d'installation du compilateur de langue C (version informatique) Mar 03, 2025 pm 05:41 PM

Ce tutoriel guide les utilisateurs en installant C compilateurs sur Windows, MacOS et Linux. Il détaille l'installation des compilateurs populaires (Mingw, Visual Studio, Xcode, GCC), explique la configuration variable de l'environnement et propose des étapes de dépannage

See all articles