Bạn có thể sử dụng lambda hoặc cú pháp đại biểu vô danh - bạn chỉ cần xác định kiểu của đối số, và đánh dấu nó như là ra:
public delegate bool CutoffDateDelegate(out DateTime cutoffDate);
// using lambda syntax:
CutoffDateDelegate d1 =
(out DateTime dt) => { dt = DateTime.Now; return true; };
// using anonymous delegate syntax:
CutoffDateDelegate d2 =
delegate(out DateTime dt) { dt = DateTime.Now; return true; }
Trong khi tuyên bố một cách rõ ràng lập luận như ref ra/vào dự kiến , phải khai báo các kiểu đối số trong biểu thức lambda ít phổ biến hơn vì trình biên dịch có thể suy ra chúng. Tuy nhiên, trong trường hợp này, trình biên dịch hiện không suy ra các kiểu cho các đối số out hoặc ref trong các biểu thức lambda/anon. Tôi không chắc chắn nếu hành vi này là một lỗi/giám sát hoặc nếu có một lý do ngôn ngữ tại sao điều này phải như vậy, nhưng có một cách giải quyết đủ dễ dàng.
EDIT: tôi đã làm một kiểm tra nhanh chóng trong β2 VS2010, và nó vẫn có vẻ như bạn phải xác định các loại đối số - họ không được suy ra cho C# 4.
Nhận ra đây là loại cũ, nhưng tôi đừng nghĩ rằng đó là một bản sao. Câu hỏi được liên kết là sử dụng tham số out của hàm cha (?) Bên trong hàm ẩn danh, trong khi câu hỏi này là về việc khai báo một hàm ẩn danh có tham số riêng của nó. – Salvador