Anonymous
methods allow you to declare a method body without an explicit name.
They behave exactly like normal methods behind the scenes, however,
there is no way to explicitly call them in your code.
An
anonymous method is a block of code that is passed to a delegate. It
is created only to be used as a target for a delegate. The main
advantage to using an anonymous method is simplicity. It is a
preferred way for writing inline code.
You
can omit the parameter list in anonymous methods. Thus an anonymous
method can be converted to delegates with a variety of signatures,
which is not possible with lambda expressions.
Example:
//
Demonstrate an anonymous method
using
System;
//
Declare a delegate type
delegate
void
ShowSum();
class
AnonymousMethod
{
static
void
Main()
{
//
The code for generating the sum is passed as an anonymous method
ShowSum
oShowSum = delegate
{
//
This is the block of code passed to the delegate
int
iSum = 0;
for
(int
i = 0; i <= 5; i++)
{
iSum += i;
}
Console.WriteLine(iSum);
Console.ReadKey();
};
//
Notice the semicolon
oShowSum();
}
}
Output: 15
Pass Arguments and Return a Value from an Anonymous Method
It is possible to pass one or more arguments to an anonymous method. To do so, follow the delegate keyword with a parenthesized parameter list. Then, pass the argument(s) to the delegate instance when it is called.
An anonymous method can also return a value. However, the type of the return value must be compatible with the return type specified by the delegate.
Example:
//
Demonstrate an anonymous method that returns a value.
using System;
//
This delegate returns a value. Notice that ShowSum now has a parameter.
delegate int ShowSum(int iEnd);class AnonymousMethod
{
static void Main()
{
int result;
// Here, the ending value for the count is passed to the anonymous method.
// A summation of the count is returned.
{
int iSum = 0;
for(int i=0; i <= iEnd; i++)
{
Console.WriteLine(i);
iSum += i;
}
return iSum; // Return a value from an anonymous method
};
result = oShowSum(3);
Console.WriteLine("Summation of 3 is " + result);
Console.WriteLine();
result = oShowSum(5);
Console.WriteLine("Summation of 5 is " + result);
}
}
Related Post: Delegates, Multicast Deletages (Multicasting)
No comments:
Post a Comment