Skip to main content

Programmation Fonctionnelle

Fonction de première classe

C# supporte les fonctions de première classes (first-class functions) car il permet de manipuler des fonctions comme des variables, ceci notamment grace aux délégués.

Délégués

Les délégués (delegates) sont le super de première classe pour les fonctions en C#. Les délégués sont des pointeurs de fonction typés, qui permettent de manipuler les méthodes comme des variables et de les appeler. Le délégué se définit avec le mot-clé delegate et contraint la signature de fonction correspondante :

public delegate int MathOperation(int leftOperand, int rightOperand);
public class Addition{
	public int Add(int leftOperand, int rightOperand) => leftOperand + rightOperand;
}

MathOperation addition = new Addition().Add;

On peut ensuite exécuter la méthode à partir de cette variable :

var result = addition.Invoke(4,2);

Lambdas

On peut aussi utiliser la syntaxe lambda pour définir des fonctions anonymes, et les assigner à des délégués :

MathOperation addition = (int left, int right) => left + right;

LinQ

LinQ, pour Language Integrated Queries est une fonctionnalités de C# qui permet d'utiliser des opérateurs fonctionnels.

Pattern Matching

Records