You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mchsamples-.net-core/ex_030_001_anonymousMethods/Program.cs

65 lines
2.3 KiB

// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : Program.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-03
//
// ========================================================================
using System.Text;
using static System.Console;
namespace ex_030_001_anonymousMethods
{
class Program
{
/// <summary>
/// le délégué
/// </summary>
/// <param name="x">un entier</param>
/// <returns>un autre entier dépendant du paramètre et de l'exécution de la fonction de type Modifieur</returns>
delegate int Modifieur(int x);
delegate int Opération(int x, int y);
/// <summary>
/// ici, on a une méthode "m" de type "Modifieur" (le délégué juste au-dessus)
/// et on l'affecte avec différentes "valeurs" (ici méthodes) possibles.
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
OutputEncoding = Encoding.Unicode;
//on affecte une méthode anonyme à m
Modifieur m = delegate (int x) { return x * 2; };
int resultat = m(3);
WriteLine($"m(3) = {resultat}");
WriteLine($"m.Target == null ? {m.Target == null}");
//on affecte une autre méthode anonyme à m
m = delegate (int x) { return x * x; };
resultat = m(3);
WriteLine($"m(3) = {resultat}");
WriteLine($"m.Target == null ? {m.Target == null}");
//on affecte à m une méthode anonyme utilisant des variables locales
int offset = 1, pente = 2;
m = delegate (int x) { return offset + pente * x; };
resultat = m(3);
WriteLine($"m(3) = {resultat}");
WriteLine($"m.Target == null ? {m.Target == null}");
WriteLine($"m.Target : {m.Target}");
Opération o = delegate (int x, int y) { return x * y; };
WriteLine($"2x3 = {o(2, 3)}");
o = delegate (int x, int y) { return y - 2; };
WriteLine($"3-2 = {o(2, 3)}");
}
}
}