2010-10-21 7 views
7

Buenas tardes,valores de los parámetros predeterminados en lambda C# 's expresiones de

Por favor alguien puede decirme si puedo establecer valores de los parámetros por defecto al utilizar expresiones lambda en C#? Por ejemplo, si tengo el código

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

cómo puedo configurar IntTmp 's valor predeterminado, por ejemplo, dos? La forma habitual de establecer valores de parámetros predeterminados en un método parece no funcionar con este tipo de expresiones (y realmente necesito uno de este tipo aquí).

Muchas gracias.

+0

Es posible que necesite utilizar .NET 4.0 http://msdn.microsoft.com/en-us/library/dd264739.aspx – hunter

Respuesta

1

Realmente no se puede menos que hacerlo a través de la composición de funciones:

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

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

También puede intentar modificar algunaFuncion tomar un anulable, pero entonces tendría que pasar explícitamente nulo para un valor y comprobar que en el cuerpo del método.

+0

No recuerdo haber hecho tal cosa, y parece muy razonable, pero en el Por otro lado, preferiría evitar usarlo para no tener muchos métodos para la misma cosa. ¡Muchas gracias de todos modos! – Miguel

Cuestiones relacionadas