2010-10-21 10 views
7

Bonjour,valeurs des paramètres par défaut dans C# 'expressions lambda s

Quelqu'un peut-il s'il vous plaît me dire si je peux définir des valeurs de paramètres par défaut lors de l'utilisation des expressions lambda en C#? Par exemple, si j'ai le code

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

comment puis-je définir la valeur par défaut « IntTmp, par exemple, deux? La façon habituelle de définir des valeurs de paramètre par défaut dans une méthode ne semble pas fonctionner avec ce genre d'expressions (et j'en ai vraiment besoin ici).

Merci beaucoup.

+0

Vous pourriez avoir besoin d'utiliser .NET 4.0 http://msdn.microsoft.com/en-us/library/dd264739.aspx – hunter

Répondre

1

Vous ne pouvez vraiment pas à moins que vous le faire via la composition des fonctions:

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

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

Vous pouvez également essayer de modifier SomeFunction prendre un annulable, mais vous devez passer explicitement nulle pour une valeur et vérifier que dans le corps de la méthode.

+0

Je ne me souviens pas d'avoir fait une telle chose, et cela semble très raisonnable, mais sur le D'autre part je préférerais éviter de l'utiliser pour ne pas avoir beaucoup de méthodes pour la même chose. Merci beaucoup de toute façon! – Miguel