Có cách nào để sử dụng optional arguments (tham số mặc định) với lambda expressions trong C#? Tôi đã đọc qua tài liệu nhưng không thể tìm thấy gì để nói theo cách này hay cách khác.Có thể sử dụng tham số tùy chọn/mặc định trong biểu thức lambda trong C# không?
Để minh họa, tôi có thể xác định phương pháp đơn giản mà sử dụng một đối số tùy chọn để cung cấp một giá trị mặc định như vậy:
void MyMethod(string arg = "default-value")
{
Console.WriteLine(arg);
}
Những gì tôi muốn biết là nếu tôi có thể làm điều tương tự bằng cách sử dụng lambda biểu hiện.
// gives a syntax error
Action<string> MyMethod = (arg = "default") => Console.WriteLine(arg);
Tôi có thể làm việc trong tham số tùy chọn với giá trị mặc định bằng đại biểu, nhưng điều này có vẻ hơi vụng về.
delegate void MyDelegate(string arg = "default");
MyDelegate MyMethod = arg => Console.WriteLine(arg);
Ngoài ra tôi có thể kiểm tra các thông số trong cơ thể lambda, một cái gì đó giống như ...
Action<string> MyMethod = (arg) => Console.WriteLine(string.IsNullOrEmpty(arg) ?
"default" :
arg);
Nhưng một lần nữa này có vẻ hơi vụng về.
Có thể sử dụng tham số tùy chọn để đặt giá trị mặc định trong biểu thức lambda trong C# không?
bản sao có thể có của [Cách chuyển một phương thức với các tham số tùy chọn làm đối số?] (Http://stackoverflow.com/questions/12728844/how-to-pass-a-method-with-optional-parameters-as -an-argument) – horgh
Điều đó không có ý nghĩa. Bạn không thể gọi 'Action' mà không có đối số. –
SLaks
@KonstantinVasilcov - nó không phải là một bản sao ở tất cả - Tôi đặc biệt hỏi về biểu thức lambda - không phải là phương pháp đơn giản. Tôi nghĩ tôi đã làm rõ điều đó, xin lỗi. – Fraser