Créer une fonction générique en C#

Muhammad Maisam Abbas 16 février 2024
  1. Créer une fonction générique avec surcharge de fonction en C#
  2. Créer une fonction générique avec la classe T en C#
Créer une fonction générique en C#

Ce tutoriel abordera les méthodes pour créer une fonction avec un type de retour générique en C#.

Créer une fonction générique avec surcharge de fonction en C#

Si nous sommes confrontés à un scénario dans lequel nous avons besoin que la même fonction soit appliquée à différents types de données, nous pouvons avoir plusieurs solutions à ce problème.

Notre première solution implique la surcharge de fonctions. En cela, nous créons plusieurs fonctions avec le même nom mais des types de retour différents et/ou des paramètres différents.

L’extrait de code suivant montre comment nous pouvons obtenir une fonction générique en utilisant la surcharge de fonction en C#.

class myClass {
  public int div(int a, int b) {
    return a / b;
  }
  public double div(double a, double b) {
    return a / b;
  }

  public static void Main(String[] args) {
    myClass ob = new myClass();

    int result1 = ob.div(12, 2);
    Console.WriteLine(result1);
    double result2 = ob.div(13, 2.5);
    Console.WriteLine(result2);
  }
}

Production:

6
5.2

Nous avons défini deux fonctions différentes du même nom, div(), qui gèrent la division entière et décimale en C#. De même, plus de fonctions peuvent être écrites pour gérer plus de cas.

L’avantage de cette méthode est qu’on n’est pas obligé de faire la même chose avec tous les types de données. Nous pouvons faire une chose avec un type de données et faire l’inverse avec l’autre type de données.

Tout dépend de notre scénario et de nos besoins.

L’inconvénient évident de cette approche est que nous devons écrire beaucoup de code. Ce problème devient apparent lorsque nous faisons la même chose mais que nous devons couvrir tous les types de données.

Créer une fonction générique avec la classe T en C#

Cette approche est la meilleure dans les scénarios où nous faisons la même chose pour tous les types de données et devons gérer de nombreux cas.

Un exemple de ce type de tâche est la lecture de données à partir d’une base de données. Ici, nous savons que les types de données d’une colonne sont les mêmes, mais nous n’avons aucune idée du type de données ou de la colonne à l’avance.

En C#, une fonction générique est une fonction déclarée avec un paramètre de type T. Ce paramètre de type T est utilisé lors de l’appel de la fonction pour définir le type de la fonction.

Nous pouvons appeler la même fonction avec différents types de données en tant que paramètres de type à chaque fois.

L’extrait de code suivant montre comment nous pouvons utiliser le paramètre type pour déclarer et utiliser une fonction avec un type de retour générique en C#.

static T changeType<T>(string v) {
  return (T)Convert.ChangeType(v, typeof(T));
}
string s = "92";
int ci = changeType<int>(s);
float cf = changeType<float>(s);
decimal cd = changeType<decimal>(s);
Console.WriteLine(ci);
Console.WriteLine(cf);
Console.WriteLine(cd);

Production:

92
92
92

Dans le code ci-dessus, nous avons déclaré une fonction changeType<T>() avec le paramètre de type T. Cette fonction prend une variable de chaîne v comme paramètre d’entrée, convertit le type de données du paramètre d’entrée v en T, convertit le résultat en T et le renvoie.

La sortie montre ce qui se passe lorsque nous essayons de changer le type de données chaîne 92 en nombre entier, flottant et décimal, respectivement.

Le problème avec cette approche est que si la chaîne n’est pas transtypable en paramètre de type T, cela donnerait une erreur d’exécution.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp Data Type