2010-10-21 69 views
7

Chào buổi chiều,Giá trị tham số mặc định trong biểu thức lambda của C#

Ai đó có thể cho tôi biết nếu tôi có thể đặt giá trị thông số mặc định khi sử dụng biểu thức lambda trong C#? Ví dụ: nếu tôi có mã

public static Func<String, Int32, IEnumerable<String>> SomeFunction = (StrTmp, IntTmp) => { ... }, 

làm cách nào tôi có thể đặt giá trị mặc định IntTmp ', ví dụ như hai? Cách thông thường để thiết lập các giá trị tham số mặc định trong một phương thức có vẻ không hoạt động với kiểu biểu thức này (và tôi thực sự cần một kiểu này ở đây).

Cảm ơn bạn rất nhiều.

+0

Bạn có thể cần phải sử dụng .NET 4.0 http://msdn.microsoft.com/en-us/library/dd264739.aspx – hunter

Trả lời

1

Bạn thực sự không thể, trừ khi bạn làm điều đó thông qua thành phần của chức năng:

public static Func<String, Int32, IEnumerable<String>> SomeFunction = 
              (StrTmp, IntTmp) => { ... }; 

public static Func<String, IEnumerable<String>> SomeFunctionDefaulted = 
            strTmp => SomeFunction(strTmp, 2); 

Bạn cũng có thể thử thay đổi SomeFunction để có một nullable, nhưng sau đó bạn sẽ phải rõ ràng vượt qua null cho một giá trị và kiểm tra cho rằng trong thân phương pháp.

+0

Tôi không nhớ đã làm một điều như vậy, và có vẻ như rất hợp lý, nhưng trên Mặt khác, tôi muốn tránh sử dụng nó không có nhiều phương pháp cho cùng một điều. Cảm ơn bạn rất nhiều! – Miguel

Các vấn đề liên quan