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_028_005_nested_delegate/Program.cs

126 lines
5.0 KiB

// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : Program.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-03
//
// ========================================================================
using System;
using static System.Console;
using Namespace2;
using System.Text;
namespace Namespace1
{
class Program
{
static void Main(string[] args)
{
OutputEncoding = Encoding.Unicode;
//on déclare une instance d'un type délégué déclaré dans une autre classe, le reste fonctionne pareil
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.White;
Write("utilisation d'une méthode ");
ForegroundColor = ConsoleColor.Magenta;
Write("statique ");
ForegroundColor = ConsoleColor.White;
Write("comme instance de délégué d'un type délégué d'une autre classe : ");
ForegroundColor = ConsoleColor.Red;
WriteLine("Double");
ForegroundColor = ConsoleColor.DarkGreen;
WriteLine("MaClasseDeMath.Modifieur m = Double;");
WriteLine("int resultat = m(3)");
ForegroundColor = ConsoleColor.Red;
#endregion
MaClasseDeMaths.Modifieur m = Double;
int resultat = m(3);
WriteLine("m(3) = " + resultat);
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.DarkGray;
#endregion
WriteLine($"m.Target == null ? {m.Target == null}");
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.White;
WriteLine();
#endregion
//on affecte MaClasseDeMath.Carré (méthode static d'une autre classe que Main) à m
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.White;
Write("utilisation d'une méthode ");
ForegroundColor = ConsoleColor.Magenta;
Write("statique d'une autre classe ");
ForegroundColor = ConsoleColor.White;
Write("comme instance de délégué d'un type délégué d'une autre classe : ");
ForegroundColor = ConsoleColor.Red;
WriteLine("MaClasseDeMath.Carré");
ForegroundColor = ConsoleColor.DarkGreen;
WriteLine("MaClasseDeMath.Modifieur m = MaClasseDeMath.Carré;");
WriteLine("int resultat = m(3)");
ForegroundColor = ConsoleColor.Red;
#endregion
m = MaClasseDeMaths.Carré;
resultat = m(3);
WriteLine($"m(3) = {resultat}");
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.DarkGray;
#endregion
WriteLine($"m.Target == null ? {m.Target == null}");
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.White;
WriteLine();
#endregion
//on affecte Droite.Image (méthode non static d'une autre classe que Main) à m
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.White;
Write("utilisation d'une méthode ");
ForegroundColor = ConsoleColor.Magenta;
Write("non statique d'une autre classe ");
ForegroundColor = ConsoleColor.White;
Write("comme instance de délégué d'un type délégué d'une autre classe : ");
ForegroundColor = ConsoleColor.Red;
WriteLine("Droite.Image");
ForegroundColor = ConsoleColor.DarkGreen;
WriteLine("Droite droite = new Droite(1, 2);");
WriteLine("MaClasseDeMath.Modifieur m = droite.Image;");
WriteLine("int resultat = m(3)");
ForegroundColor = ConsoleColor.Red;
#endregion
Droite droite = new Droite(1, 2);
m = droite.Image;
resultat = m(3);
WriteLine($"m(3) = {resultat}");
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.DarkGray;
#endregion
WriteLine($"m.Target == null ? {m.Target == null}");
WriteLine($"m.Target : {m.Target}");
#region Affichage des infos dans la Console
ForegroundColor = ConsoleColor.White;
WriteLine();
#endregion
}
/// <summary>
/// méthode static de type "Modifieur" car elle a la même signature que le délégué Modifieur
/// </summary>
/// <param name="x">un entier</param>
/// <returns>le double de l'entier pris en paramètre</returns>
static int Double(int x)
{
return x * 2;
}
}
}