Passing a function as a parameter to a method

I have recently been using D3.js for some HTML5/SVG/Javascript work and suddenly realised how useful passing functions as parameters to methods is. I then thought, well how about C#. Here are some examples ….
This is the ubiquitous ‘Hello World’ example. Here a lambda function is passed as a parameter to a ‘Test’ method. The method makes a callback to the lambda function passing ‘Hello’ as a parameter. The lambda function now executes and concatenates ‘Hello’ with ‘ World’ and returns ‘Hello World’. This result is then passed back to the variable res. I like the way that we can influence the behaviour of a method without having to modify any code within it.

static void Main(string[] args)
{
    string res = Test(2, d => d + " World");
    Console.WriteLine(res);
}

public static string Test(int a, Func<string, string> f)
{
    return f("Hello");
}
In the above example we used a Func to allow us to pass a variable to the function and get a result returned. In most cases you will not want a returned result. So use the Action instead. Here is an example..

static void Main(string[] args)
{
    int a = 0;
    Test(d => { a =  d * 3; });
    Console.WriteLine(a);
}

public static void Test(Action<int> f)
{
    f(7);
}

The above methods are using the passed function as their principle subject. In the real world the function passed to a method would serve to add value or behaviours to the method.

This entry was posted in SharePoint. Bookmark the permalink.

Comments are closed.