27
Tôi đang làm gì sai ở đây? Tôi có thể thực hiện hành động của mình bằng cách nào?Gọi đệ quy - Hành động lambda
var recurse = new Action<IItem, Int32>((item, depth) =>
{
if (item.Items.Count() > 0) recurse(item, depth + 1); // red squiggly here
// ...
});
Tôi nhận được một màu đỏ nguệch ngoạc khi gọi recurse
nói "phương pháp, đại biểu hoặc sự kiện dự kiến".
Cập nhật
Tôi đã chấp nhận câu trả lời của Sao Homam. Tôi chỉ muốn thêm/chia sẻ một cú pháp cho cùng ... Nhưng mà tôi tìm thấy dễ dàng hơn một chút trên mắt ...
Action<IEnumerable<Item>> Recurse = null;
Recurse = item =>
{
if (item.Items != null) Recurse(item.Items);
// ...
};
Tôi ghét phải phân tách định nghĩa và triển khai. Có cách nào tôi có thể làm điều này trong một dòng mã? – roosteronacid
Không. Eric giải thích lý do tại sao trong mục nhập blog của anh ấy (bình thường nó xuất hiện): http://blogs.msdn.com/b/ericlippert/archive/2006/08/18/706398.aspx –
@Ron: Nice tidbit. Làm cho một số loại cảm giác kỳ lạ :) – roosteronacid