Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何通过&x27;空';行动_C#_.net - Fatal编程技术网

C# 我如何通过&x27;空';行动

C# 我如何通过&x27;空';行动,c#,.net,C#,.net,我有下面的函数定义 private void DoExport(Action<ColumnView, bool> UpdateColumns) { ... } private void UpdateNonPrintableColumns(ColumnView view, bool visible) { ... } 我的问题是。如何传递“null”操作?有可能吗 e、 g. DoExport(空) 如果要执行以下操作,请传入空操作: DoExport(

我有下面的函数定义

private void DoExport(Action<ColumnView, bool> UpdateColumns)  
{  
...  
}

private void UpdateNonPrintableColumns(ColumnView view, bool visible)  
{  
...  
}   
我的问题是。如何传递“null”操作?有可能吗

e、 g.

DoExport(空) 如果要执行以下操作,请传入空操作:

DoExport((x, y) => { })
第二,您必须检查您的代码,因为传入
null
非常好

public void X()
{
    A(null);
}

public void A(Action<ColumnView, bool> a)
{
    if (a != null)
    {
        a();
    }
}
public void X()
{
A(空);
}
公开无效A(行动A)
{
如果(a!=null)
{
a();
}
}
或根据C#6(使用空传播运算符):

公共作废A(操作A)
{
a?.Invoke();
}

您可以传递一个不执行任何操作的操作:

DoExport((_, __) => { });

或者只是在方法内部处理它:

private void DoExport(Action<ColumnView, bool> UpdateColumns)  
{  
  if (UpdateColumns != null)
    UpdateColumns(...);
}
private void DoExport(操作更新列)
{  
if(UpdateColumns!=null)
更新列(…);
}

我收到以下错误:错误19代表“System.Action”未采用0参数。我已更新并测试了我的答案。它确实有效。如果您有其他参数,请将它们添加到lamdba构造函数中。vs2015建议
a?.Invoke()双重哇+我只是为了这个很棒的答案。请允许我问一下,在c#规范(或任何地方)中,您在哪里发现可以使用#作为变量?我会投票将其作为我接受的答案,但我只担心维护代码的人不会知道到底是什么about@Eminem规格为-“\”可以用作起始字符,但是没有任何要求要遵循它。我发现在lambdas中显示哪些变量(如果有的话)被有效地忽略是很有用的。同样,这也很公平——Patrick的答案更全面——空检查很重要。下划线来自函数式编程,它们通常的意思是“不在乎这个。”Duh!这一刻就在我身边。应该检查空值+1在相关说明中,您可能需要在某些情况下强制转换null,例如操作a=someCond?MyMethod:(Action)null;
DoExport((_, __) => { });
private void DoExport(Action<ColumnView, bool> UpdateColumns)  
{  
  if (UpdateColumns != null)
    UpdateColumns(...);
}