27
Co ja tu robię źle? Jak mogę wykonać moje działanie?Wywołanie rekurencyjne - działanie lambda
var recurse = new Action<IItem, Int32>((item, depth) =>
{
if (item.Items.Count() > 0) recurse(item, depth + 1); // red squiggly here
// ...
});
Dostaję czerwoną falowane Dzwoniąc recurse
mówiąc „metoda, przekazać lub wydarzenie oczekiwane”.
Aktualizacja
Mam akceptowane odpowiedź Homam użytkownika. Chciałbym tylko dodać/dzielić inną składnię samo ... Ale co uważam nieco łatwiej na oczy ...
Action<IEnumerable<Item>> Recurse = null;
Recurse = item =>
{
if (item.Items != null) Recurse(item.Items);
// ...
};
Nie chciałbym dzielić definicji i implementacji. Czy jest jakiś sposób, aby to zrobić w jednym wierszu kodu? – roosteronacid
Nie. Eric wyjaśnia, dlaczego w swoim wpisie na blogu (jak zwykle się pojawia): http://blogs.msdn.com/b/ericlippert/archive/2006/08/18/706398.aspx –
@Ron: Nice tidbit. Ma jakiś dziwny sens :) – roosteronacid