C# Language
Argumentos nombrados y opcionales
Buscar..
Observaciones
Argumentos con nombre
Ref .: Los argumentos con nombre de MSDN le permiten especificar un argumento para un parámetro en particular asociando el argumento con el nombre del parámetro en lugar de con la posición del parámetro en la lista de parámetros.
Según lo dicho por MSDN, un argumento con nombre,
- Le permite pasar el argumento a la función asociando el nombre del parámetro.
- No hay necesidad de recordar la posición de los parámetros que no conocemos siempre.
- No es necesario mirar el orden de los parámetros en la lista de parámetros de la función llamada.
- Podemos especificar el parámetro para cada argumento por su nombre.
Argumentos opcionales
Ref: MSDN La definición de un método, constructor, indexador o delegado puede especificar que sus parámetros son necesarios o que son opcionales. Cualquier llamada debe proporcionar argumentos para todos los parámetros requeridos, pero puede omitir argumentos para parámetros opcionales.
Como dijo MSDN, un argumento opcional,
- Podemos omitir el argumento en la llamada si ese argumento es un argumento opcional
- Cada argumento opcional tiene su propio valor predeterminado
- Tomará valor predeterminado si no suministramos el valor
- Un valor predeterminado de un argumento opcional debe ser un
- Expresión constante.
- Debe ser un tipo de valor como enum o struct.
- Debe ser una expresión del formulario por defecto (valueType)
- Debe establecerse al final de la lista de parámetros
Argumentos con nombre
Considere la siguiente es nuestra llamada de función.
FindArea(120, 56);
En este nuestro primer argumento es la longitud (es decir, 120) y el segundo argumento es el ancho (es decir, 56). Y estamos calculando el área por esa función. Y siguiente es la definición de la función.
private static double FindArea(int length, int width)
{
try
{
return (length* width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
Así que en la primera llamada a la función, acabamos de pasar los argumentos por su posición. ¿Derecha?
double area;
Console.WriteLine("Area with positioned argument is: ");
area = FindArea(120, 56);
Console.WriteLine(area);
Console.Read();
Si ejecuta esto, obtendrá una salida de la siguiente manera.
Ahora aquí vienen las características de un argumento con nombre. Por favor, consulte la función de llamada anterior.
Console.WriteLine("Area with Named argument is: ");
area = FindArea(length: 120, width: 56);
Console.WriteLine(area);
Console.Read();
Aquí estamos dando los argumentos nombrados en la llamada al método.
area = FindArea(length: 120, width: 56);
Ahora, si ejecuta este programa, obtendrá el mismo resultado. Podemos dar los nombres al revés en la llamada al método si estamos usando los argumentos nombrados.
Console.WriteLine("Area with Named argument vice versa is: ");
area = FindArea(width: 120, length: 56);
Console.WriteLine(area);
Console.Read();
Uno de los usos importantes de un argumento con nombre es que, cuando lo usa en su programa, mejora la legibilidad de su código. Simplemente dice cuál es tu argumento o qué es.
También puedes dar los argumentos posicionales. Eso significa, una combinación de ambos argumentos posicionales y argumentos con nombre.
Console.WriteLine("Area with Named argument Positional Argument : ");
area = FindArea(120, width: 56);
Console.WriteLine(area);
Console.Read();
En el ejemplo anterior pasamos 120 como la longitud y 56 como un argumento con nombre para el ancho del parámetro.
También hay algunas limitaciones. Vamos a discutir la limitación de un argumento con nombre ahora.
Limitación de usar un argumento con nombre
La especificación de argumento con nombre debe aparecer después de que se hayan especificado todos los argumentos fijos.
Si usa un argumento con nombre antes de un argumento fijo, obtendrá un error de tiempo de compilación de la siguiente manera.
La especificación del argumento con nombre debe aparecer después de que se hayan especificado todos los argumentos fijos
Argumentos opcionales
Consideremos que lo anterior es nuestra definición de función con argumentos opcionales.
private static double FindAreaWithOptional(int length, int width=56)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
Aquí hemos establecido el valor para el ancho como opcional y hemos dado el valor como 56. Si observa, el IntelliSense mismo le muestra el argumento opcional como se muestra en la imagen de abajo.
Console.WriteLine("Area with Optional Argument : ");
area = FindAreaWithOptional(120);
Console.WriteLine(area);
Console.Read();
Tenga en cuenta que no obtuvimos ningún error durante la compilación y le daremos una salida de la siguiente manera.
Usando el atributo opcional.
Otra forma de implementar el argumento opcional es mediante el uso de la palabra clave [Optional]
. Si no pasa el valor del argumento opcional, el valor predeterminado de ese tipo de datos se asigna a ese argumento. La palabra clave Optional
está presente en el espacio de nombres "Runtime.InteropServices".
using System.Runtime.InteropServices;
private static double FindAreaWithOptional(int length, [Optional]int width)
{
try
{
return (length * width);
}
catch (Exception)
{
throw new NotImplementedException();
}
}
area = FindAreaWithOptional(120); //area=0
Y cuando llamamos a la función, obtenemos 0 porque el segundo argumento no se pasa y el valor predeterminado de int es 0, por lo que el producto es 0.