ExtensionMethod.NET Home of 880 C#, Visual Basic, F# and Javascript extension methods

Call Action / Func

Allows user to call an action / func delegate without having to check for null delegate

Source

public static void Call(this Action action)
{
    if (action != null)
        action();
}

public static void Call<T>(this Action<T> action, T t)
{
    if (action != null)
        action(t);
}

public static void Call<T1, T2>(this Action<T1, T2> action, T1 t1, T2 t2)
{
    if (action != null)
        action(t1, t2);
}

public static void Call<T1, T2, T3>(this Action<T1, T2, T3> action, T1 t1, T2 t2, T3 t3)
{
    if (action != null)
        action(t1, t2, t3);
}

public static R Call<R>(this Func<R> func, R r = default (R))
{ return (func != null) ? func() : r; }

public static R Call<T, R>(this Func<T, R> func, T t, R r = default (R))
{ return (func != null) ? func(t) : r; }

public static R Call<T1, T2, R>(this Func<T1, T2, R> func, T1 t1, T2 t2, R r = default (R))
{ return (func != null) ? func(t1, t2) : r; }

public static R Call<T1, T2, T3, R>(this Func<T1, T2, T3, R> func, T1 t1, T2 t2, T3 t3, R r = default (R))
{ return (func != null) ? func(t1, t2, t3) : r; }

Example

Action action = null;
action.Call();

Action<string> action1 = null;
action1.Call("This won't run");

action1 = str => Console.WriteLine(str);
action1.Call("This will run");

// Same behavior with the rest of the Func

Author: Juan Lopez

Submitted on: 27 jun. 2013

Language: C#

Type: System.Delegate

Views: 5378