Action as a optional parameter in a function

Esa picture Esa · Jun 27, 2013 · Viewed 10.1k times · Source

Is it possible to have an Action as an optional parameter in a function? The button2Action should be optional.

public void DrawWindow(Rect p_PositionAndSize, string p_Button2Text = "NotInUse", Action p_Button2Action)
{
 // Stuff happens here
}

I tried it with e.g p_Button2Action = delegate{ Debug.Log("NotInUse"); } but it does not compile due to Default parameter value for p_Button2Action must be a compile-time constant. How do you make an optional Action that is a compile time constant?

Answer

Matthew Watson picture Matthew Watson · Jun 27, 2013

You must specify a constant value for a default parameter, so the only default value you can specify for an Action is null.

However, it's easy to check for null and substitute the correct value:

public void DrawWindow(Rect p_PositionAndSize, string p_Button2Text = "NotInUse", Action p_Button2Action = null)
{
    if (p_Button2Action == null)
        p_Button2Action = delegate{ Debug.Log("NotInUse"); }

    ...
}