¿Cómo puedo hacer que un método tenga valores predeterminados para los parámetros?Parámetros de método predeterminados en C#
Respuesta
Simplemente declara con los valores por defecto - se les llama optional parameters:
public void myMethod(string param1 = "default", int param2 = 3)
{
}
Esto fue introducido en C# 4.0 (por lo que tendrá que utilizar Visual Studio 2010).
@Ardman: OP puede significar C# 4. – dalle
C# 4.0 le permite utilizar named and optional arguments:
public void ExampleMethod(
int required,
string optionalstr = "default string",
int optionalint = 10
)
En versiones anteriores se podía simulate default parameters mediante el uso de la sobrecarga de métodos.
Sólo se puede hacer esto en C# 4, que introdujo tanto named arguments and optional parameters:
public void Foo(int x = 10)
{
Console.WriteLine(x);
}
...
Foo(); // Prints 10
Tenga en cuenta que el valor por defecto tiene que ser una constante - ya sea una constante de lo normal en tiempo de compilación (por ejemplo, un literal) o:
- El constructor sin parámetros de un valor de tipo de
default(T)
para algún tipoT
También tenga en cuenta que el valor predeterminado está incrustado en el ensamblador del llamador (asumiendo que omite el argumento relevante) - por lo que si cambia el valor predeterminado sin reconstruir el código de llamada, aún verá el valor anterior.
Esto (y otras características nuevas en C# 4) están cubiertos en la segunda edición de C# in Depth. (. Capítulo 13 en este caso)
El enlace al libro 'C# in Depth' es incorrecto. El sitio web 'manning.com' devuelve un archivo PHP que redirige a un sitio web que no se puede cargar. –
@NikolayKostov: Humbug - programa afiliado cambiado hace un tiempo. He incluido un enlace más simple aquí. –
Una solución sencilla es sobrecargar el método:
private void Foo(int length)
{
}
private void Foo()
{
Foo(20);
}
Esta sigue siendo una buena solución, incluso en C# 4. Una ventaja de esto es que los valores predeterminados están integrados en su conjunto en lugar de los llamadores; ver la respuesta de Jon para más detalles. –
@Dan: me he vuelto cada vez más escéptico sobre el * real * daño del problema "no se puede cambiar los valores predeterminados" ... porque para la mayoría de los códigos, espero que toda la aplicación se vuelva a compilar de todos modos. Es algo que vale la pena conocer, pero no creo que sea realmente un gran problema. –
@Jon, me inclino a estar de acuerdo contigo, ya que creo que probablemente sea una mala práctica confiar en valores predeterminados particulares, en cualquier caso, ya que eso parece indicar que la naturaleza de la API ha cambiado. Si ese es el caso, el cliente probablemente necesite cambiar de todos modos. –
- 1. Parámetros predeterminados en C
- 2. C# - ¿Cómo saltarse parámetros con valores predeterminados?
- 3. Punteros de función con parámetros predeterminados en C++
- 4. C# 4.0: Valores predeterminados del parámetro de método como matriz
- 5. Miembros no estáticos como parámetros predeterminados en C++
- 6. Parámetros de constructor predeterminados en pyyaml
- 7. Operadores como parámetros de método en C#
- 8. Declaraciones múltiples de funciones C++ con parámetros predeterminados
- 9. C# "Objetos constantes" para usar como parámetros predeterminados
- 10. Sugerencias de parámetros del método C/C++ en Eclipse
- 11. Parámetros de plantilla predeterminados con declaración directa
- 12. ¿Es posible tener una llamada a un método dinámico para valores de parámetros predeterminados en Ruby?
- 13. valores de los parámetros predeterminados en lambda C# 's expresiones de
- 14. cómo saltear Argumentos predeterminados C++?
- 15. ¿Cómo agregar parámetros opcionales/parámetros de valores predeterminados en la función VB?
- 16. ¿Los parámetros predeterminados son una mala práctica en OOP?
- 17. Método valor predeterminado matriz de parámetros
- 18. Motivo técnico para no tener parámetros predeterminados en Java
- 19. Método que acepta n Número de parámetros en C#
- 20. Ejecutando un método con parámetros en un hilo en C#
- 21. Usar valores de parámetros predeterminados con Ninject 3.0
- 22. Método parámetros de orden en Java
- 23. ¿Cómo uso __FILE__ y __LINE__ como parámetros predeterminados en un constructor en C++?
- 24. Adjuntar parámetros con cierres de javascript a parámetros predeterminados en funciones anónimas
- 25. ¿El compilador se queja de mis parámetros predeterminados?
- 26. ¿Las rutas angulares pueden tener valores de parámetros predeterminados?
- 27. Obtener valores predeterminados de Backbone.Model en un método?
- 28. Método de ejecución C# (con parámetros) con ThreadPool
- 29. Java: Enumeración de parámetros en el método
- 30. C#: Restricción de los tipos de parámetros del método (no parámetros genéricos)
posible duplicado de [? ¿Cómo puede utilizar parámetros opcionales en C#] (http://stackoverflow.com/ questions/199761/how-can-you-use-optional-parameters-in-c) –