是否可以将Action作为函数中的可选参数? button2Action应该是可选的。
public void DrawWindow(Rect p_PositionAndSize, string p_Button2Text = "NotInUse", Action p_Button2Action)
{
// Stuff happens here
}
我尝试使用例如p_Button2Action = delegate{ Debug.Log("NotInUse"); }
,但由于 p_Button2Action的默认参数值必须是编译时常量,因此无法编译。如何创建一个可选的Action编译时间常数?
答案 0 :(得分:14)
您必须为默认参数指定常量值,因此您可以为Action指定的唯一默认值为null。
但是,检查null并替换正确的值很容易:
public void DrawWindow(Rect p_PositionAndSize, string p_Button2Text = "NotInUse", Action p_Button2Action = null)
{
if (p_Button2Action == null)
p_Button2Action = delegate{ Debug.Log("NotInUse"); }
...
}
答案 1 :(得分:3)
这可能只是使用经典重载:
public void DrawWindow(Rect p_PositionAndSize, string p_Button2Text = "NotInUse")
{
DrawWindow(p_PositionAndSize, delegate{ Thread.Sleep(1); }, p_Button2Text);
}
public void DrawWindow(Rect p_PositionAndSize, Action p_Button2Action, string p_Button2Text = "NotInUse")
{
// Stuff happens here
}
这样,您可以使用两个参数指定重载中的默认操作。
答案 2 :(得分:0)
试试这个:
public void DrawWindow(Rect p_PositionAndSize, string p_Button2Text = "NotInUse", Action p_Button2Action = null)
{
// Stuff happens here
}