C# est un langage de programmation développé par Microsoft (http://msdn.microsoft.
com/en-us/vcsharp/aa336809.aspx), et qui possède un compilateur et une machine vir-
tuelle open source à l’intérieur du projet Mono (http://www.mono-project.com). Pour
programmer en C# sous Mono, il faut utiliser les outils suivants :
•Compilation : utiliser le compilateur mcs de la manière suivante pour obtenir
un fichier .exe à partir d’un fichier de code .cs :
mcs file.cs
•Exécution : utiliser la machine virtuelle de la manière suivante :
mono file.exe
Voici un exemple de programme C# très simple :
using System;
class Progr am {
pub lic st ati c void Main () {
Conso le . W riteL ine ( " Ca ram ba !" );
} }
Exercice 2: Délégués C#
Dans le langage C#, il existe une construction permettant d’écrire une fonction anony-
me, sous la forme d’un objet particulier appelée délégué (delegate en anglais). Quelques
exemples d’utilisation :
// Type d e c l a r a t i o n
pub lic dele ga te int O ne Int ( int valu e );
// Anonymous f u n c t i o n
public static OneInt square = new O ne Int (i ⇒i∗i );
// One−ti me d e c l a r a t i o n u si n g p r e d e f i n e d t yp e
public static Func<int ,int>cube = i ⇒i∗i∗i;
// D el ega te u si ng m u l t i p l e arguments
pub lic dele ga te void Co nc at ( st rin g s1 , str ing s2 );
public static Con cat c = (a , b ) ⇒
Conso le . Wr iteL ine ( a+ b);
(∗E q u i v a l e n t i n OCaml ∗)
int →int
let squ are x = x∗x
let cube x = x∗x∗x
(str ing ∗string)→unit
let c (a , b ) =
pr in t_ st ri ng ( a ^ b)
Un délégué est, selon la documentation, “similaire à un pointeur de fonction en Cou
C++”. Le mot-clé delegate permet de définir un type auquel doit correspondre ce pointeur
de fonction. Il devient alors possible de créer de fonctions possédant ce type en utilisant la
notation (a,b) ⇒a+b. Il existe des types génériques de délégués, nommés Func<T1,. . .,TN,TRES>
qui décrivent les fonctions TRES f(T1,. . .,TN), pour Nentre 1et 16.
1. Construire un délégué C# qui prenne en paramètres deux entiers, une fonction, et
qui applique cette fonction à ces deux entiers.
Appliquer votre délégué à des fonctions simples comme la somme ou le produit.
Indice : il est possible d’utiliser un délégué intermédiaire.
2