An anonymous method.
using System;
delegate void Do();
class AnonMethDemo {
public static void Main() {
Do count = delegate {
for(int i=0; i <= 5; i++)
Console.WriteLine(i);
};
count();
}
}
0
1
2
3
4
5
An anonymous method that returns a value.
using System;
delegate int CountIt(int end);
class MainClass {
public static void Main() {
CountIt count = delegate (int end) {
Console.WriteLine("end:"+end);
return end;
};
int result = count(3);
Console.WriteLine("Summation of 3 is " + result);
result = count(5);
Console.WriteLine("Summation of 5 is " + result);
}
}
end:3
Summation of 3 is 3
end:5
Summation of 5 is 5
An anonymous method that takes an argument.
using System;
delegate void CountIt(int end);
class MainClass {
public static void Main() {
CountIt count = delegate (int end) {
Console.WriteLine("end:"+end);
};
count(3);
count(5);
}
}
end:3
end:5
Anonymous delegate method
using System;
class MainClass
{
delegate int FunctionToCall(int InParam);
static void Main()
{
FunctionToCall del = delegate(int x){
return x + 20;
};
Console.WriteLine("{0}", del(5));
Console.WriteLine("{0}", del(6));
}
}
25
26
Anonymous delegate methods
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.InteropServices;
delegate int IntDelegate(int x);
public class MainClass
{
static void TransformUpTo(IntDelegate d, int max)
{
for (int i = 0; i <= max; i++)
Console.WriteLine(d(i));
}
public static void Main(){
TransformUpTo(delegate(int x) { return x * x; }, 10);
}
}
0
1
4
9
16
25
36
49
64
81
100
anonymous method delegate invocation
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
delegate void MessagePrintDelegate(string msg);
static void Main(string[] args)
{
MessagePrintDelegate mpd2 = delegate(string msg)
{
Console.WriteLine("[Anonymous] {0}", msg);
};
LongRunningMethod(mpd2);
}
static void LongRunningMethod(MessagePrintDelegate mpd)
{
for (int i = 0; i < 99; i++)
{
if (i % 25 == 0)
{
mpd(string.Format("Progress Made. {0}% complete.", i));
}
}
}
static void PrintMessage(string msg)
{
Console.WriteLine("[PrintMessage] {0}", msg);
}
}
Anonymous Methods
using System;
using System.Threading;
public delegate void DelegateClass();
public class Starter {
public static void Main() {
DelegateClass del = delegate {
Console.WriteLine("Running anonymous method");
};
del();
}
}
Create a delegate by declaration
using System;
using System.Collections.Generic;
using System.Text;
class Program {
delegate string delegateTest(string val);
static void Main(string[] args) {
string mid = ", middle part,";
delegateTest d = delegate(string param) {
param += mid;
param += " and this was added to the string.";
return param;
};
Console.WriteLine(d("Start of string"));
}
}
Demonstrate a captured variable.
using System;
delegate int CountIt(int end);
class MainClass {
static CountIt counter() {
CountIt ctObj = delegate (int end) {
Console.WriteLine("end:"+end);
return end;
};
return ctObj;
}
public static void Main() {
CountIt count = counter();
int result = count(3);
result = count(5);
}
}
end:3
end:5