使用委托的条件分配

Zai*_*Ali 1 c# delegates anonymous-methods

我想分配给这样的数据表.

如果datatable为null,则创建一个新的数据表,否则清除数据表

我写的代码

datatable= (datatable== null) ? 
   new DataTable() :  
  delegate(){datatable.Clear(); return datatable;});
Run Code Online (Sandbox Code Playgroud)

如何使用委托或匿名方法实现这一目标?尽可能使用最短的代码.

Jon*_*eet 6

那么你可以使用代表,但我真的不会.我只是用:

if (dataTable == null)
{
    dataTable = new DataTable();
}
else
{
    dataTable.Clear();
}
Run Code Online (Sandbox Code Playgroud)

这是一个很大的的它在做什么方面更清晰,IMO.

这是代表版本的所有可怕之处:

dataTable = dataTable == null ? new DataTable() :
    ((Func<DataTable>)(() => { dataTable.Clear(); return dataTable; }))();
Run Code Online (Sandbox Code Playgroud)

  • 我可以Zain,但可能不会在评论中表现出色.tenary运算符的_false_部分是委托... Func <DataTable>.如果你没有添加最后两个护腕,那么你要返回的是一个委托.委托不会转换为数据表,您需要的是委托的结果.通过添加括号,您告诉编译器执行委托,而委托又返回一个数据表. (2认同)