This is how we simulate nested function in C# :
class Program
{
static double Foo(double a, double b)
{
Func<double, double> Square = delegate(double z)
{
return z * z;
};
return Square(a) + Square(b);
}
static void Main(string[] args)
{
Console.WriteLine("{0}", Foo(3, 4));
Console.ReadLine();
}
}
// outputs 25
The first double in Func<double, double> is the parameter, the last double is the return type
The nested function capability in C# is just a lambda, so we can shorten the code to:
static double Foo(double a, double b)
{
Func<double, double> Square = z => z * z;
return Square(a) + Square(b);
}

No comments:
Post a Comment