Die Verwendung eines Delegaten eignet sich um Funktionen / Methoden zu kapseln.
Sie ähneln einem Funktionszeigen im klassischem C und C++, in C# sind diese
objektorientiert und typsicher.
Als Beispiel für die Verwendung eines Delegate habe ich 2 kleine Funktionen, die ich mit dem Delegate benutzen möchte.
Die Delegateklasse
namespace Delegates
{
class LibDelegates
{
public delegate string SimpleDelegate(string s, string x);
public delegate int SimpleMath(int in1, int in2);
public string String2String1(string str1, string str2)
{
return (str2 + " " + str1);
}
public string String1String2(string str1, string str2)
{
return (str1 + " " + str2);
}
public int Multiplitzieren(int zahl1, int zahl2)
{
return zahl1*zahl2;
}
public int Addieren(int zahl1, int zahl2)
{
return zahl1 + zahl2;
}
}
}
Der Programmaufruf
using System;
namespace Delegates
{
class Program
{
static void Main(string[] args)
{
var myDel = new LibDelegates();
var myDelegate1 = new LibDelegates.SimpleDelegate(myDel.String1String2);
var myDelegate2 = new LibDelegates.SimpleDelegate(myDel.String2String1);
Console.WriteLine("Delegate mit String");
Console.WriteLine("Vor/Nach: {0}", myDelegate1("Vor", "nach"));
Console.WriteLine("Vor/Nach: {0}", myDelegate2("Vor", "nach"));
var myDelegate3 = new LibDelegates.SimpleMath(myDel.Multiplitzieren);
var myDelegate4 = new LibDelegates.SimpleMath(myDel.Addieren);
Console.WriteLine("Delegate mit Int");
Console.WriteLine("Multiplikation: {0}", myDelegate3(5, 5));
Console.WriteLine("Addition: {0}",myDelegate4(5, 5));
Console.ReadLine();
}
}
}