我有以下功能定义
private void DoExport(Action<ColumnView, bool> UpdateColumns)
{
...
}
private void UpdateNonPrintableColumns(ColumnView view, bool visible)
{
...
}
被召唤的例子:
DoExport(UpdateNonPrintableColumns);
我的问题是。如何通过&#39; null&#39;行动?它甚至可能吗?
e.g。
<删除> DoExport(null); <- Throws exception
德尔>
在函数体中调用操作时,DoExport(null)会引发异常
答案 0 :(得分:12)
如果你想要传递空行动:
DoExport((x, y) => { })
其次,您必须检查您的代码,因为如果完全正常,则传递null
。
public void X()
{
A(null);
}
public void A(Action<ColumnView, bool> a)
{
if (a != null)
{
a();
}
}
或者按照C#6(使用零传播运算符):
public void A(Action<ColumnView, bool> a)
{
a?.Invoke();
}
答案 1 :(得分:10)
您可以传递无效的操作:
DoExport((_, __) => { });
答案 2 :(得分:2)
或者只是在方法中处理它:
private void DoExport(Action<ColumnView, bool> UpdateColumns)
{
if (UpdateColumns != null)
UpdateColumns(...);
}