Условное присвоение с использованием делегата - PullRequest
1 голос
/ 12 июля 2011

Я хочу присвоить таблицу данных таким образом, чтобы.

Если datatable имеет значение null, создайте новый datatable, иначе clear datatable

Код, который я написал

datatable= (datatable== null) ? 
   new DataTable() :  
  delegate(){datatable.Clear(); return datatable;});

Как это будет возможно с использованием делегатов или анонимных методов?Возможно использование кратчайшего кода.

Ответы [ 2 ]

6 голосов
/ 12 июля 2011

Ну, вы могли бы использовать делегатов, но я бы не стал.Я бы просто использовал:

if (dataTable == null)
{
    dataTable = new DataTable();
}
else
{
    dataTable.Clear();
}

Это лот более понятный с точки зрения того, что он делает, IMO.

Вот версия делегата во всей ее отвратительности:

dataTable = dataTable == null ? new DataTable() :
    ((Func<DataTable>)(() => { dataTable.Clear(); return dataTable; }))();
2 голосов
/ 12 июля 2011

Ты имеешь в виду нечто подобное?

Func<DataTable, DataTable> datatable = (n => {
    if (n == null)
        n = new DataTable();
    else
        n.Clear();
    return n; });
...