Cómo usar parámetros opcionales y con nombre en C #

Microsoft introdujo soporte para parámetros con nombre y opcionales en C # 4.0. Mientras que un parámetro con nombre se usa para especificar un argumento basado en el nombre del argumento y no en la posición, se puede usar un parámetro opcional para omitir uno o más parámetros en la firma del método. Los parámetros de un método pueden ser obligatorios u opcionales, dependiendo de si necesita pasar un valor a estos parámetros cuando se llama al método.

Cabe señalar que los parámetros con nombre y opcionales se pueden utilizar no solo con métodos, sino también con indexadores y delegados. Este artículo analiza estas dos poderosas características del lenguaje de programación C # y cómo podemos trabajar con ellas.

Para trabajar con los ejemplos de código proporcionados en este artículo, debe tener Visual Studio 2019 instalado en su sistema. Si aún no tiene una copia, puede descargar Visual Studio 2019 aquí.

Crear un proyecto de aplicación de consola en Visual Studio

En primer lugar, creemos un proyecto de aplicación de consola .NET Core en Visual Studio. Suponiendo que Visual Studio 2019 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto de aplicación de consola .NET Core en Visual Studio.

  1. Inicie el IDE de Visual Studio.
  2. Haga clic en "Crear nuevo proyecto".
  3. En la ventana "Crear nuevo proyecto", seleccione "Aplicación de consola (.NET Core)" en la lista de plantillas que se muestran.
  4. Haga clic en Siguiente.
  5. En la ventana "Configure su nuevo proyecto" que se muestra a continuación, especifique el nombre y la ubicación del nuevo proyecto.
  6. Haga clic en Crear.

Esto creará un nuevo proyecto de aplicación de consola .NET Core en Visual Studio 2019. Usaremos este proyecto para trabajar con parámetros opcionales y con nombre en las secciones siguientes de este artículo.

Usar parámetros con nombre en C #

Cuando llama a un método, constructor, indexador o delegado, debe pasar argumentos para los parámetros requeridos, pero puede omitir argumentos para los parámetros que se han definido como parámetros opcionales.

A menudo es posible que deba llamar a un método que tenga muchos parámetros. E incluso cuando está llamando a un método de este tipo con solo los parámetros requeridos, a veces es extremadamente difícil entender qué argumento se asigna a qué parámetro. Aquí es donde los argumentos con nombre vienen al rescate.

Los argumentos con nombre en el lenguaje de programación C # se utilizan para asociar el nombre del argumento de un método con su valor, es decir, el valor pasado como argumento al llamar al método. Cabe señalar que cuando se utiliza un argumento con nombre, los argumentos se evalúan en el mismo orden en que se pasaron.

Veamos un ejemplo. Escriba el siguiente método llamado Add dentro de la clase Program de su nuevo proyecto de aplicación de consola.

public static int Add (int x, int y, int z, int a, int b, int c)

{

   devuelve x + y + z + a + b + c;

}

Supongamos que está llamando al método Add como se muestra en el fragmento de código a continuación.

static void Main (cadena [] argumentos)

{

    Sumar (5, 10);

}

El código anterior no funcionará porque hay seis parámetros obligatorios (ninguno son parámetros opcionales) en la firma del método Add, pero solo ha pasado dos argumentos. Se le presentará el siguiente error.

Por lo tanto, está limitado a pasar valores a cada uno de los parámetros para satisfacer la llamada, como se muestra en el fragmento de código que se muestra a continuación.

static void Main (cadena [] argumentos)

{

   Sumar (5, 10, 8, 2, 3, 6);

}

Las cosas se complican cuando tiene una combinación de tipos de datos en los parámetros de un método. Para ilustrar esto, modifiquemos nuestro método Add como se muestra en el siguiente fragmento de código.

public static int Add (int x, int y, int z, double a, double b, double c)

{

    return x + y + z + Convert.ToInt32 (a) + Convert.ToInt32 (b) + Convert.ToInt32 (c);

}

Recordar los tipos de datos de los parámetros, así como su posición, es engorroso. La solución a esto es aprovechar los argumentos con nombre y pasar valores al método como se muestra en el fragmento de código que se proporciona a continuación.

static void Main (cadena [] argumentos)

{

    Sumar (x: 5, y: 10, z: 8, a: 2.0, b: 3.0, c: 6.0);

}

Incluso puede cambiar el orden de los argumentos nombrados, como se muestra en el fragmento de código que se muestra a continuación.

static void Main (cadena [] argumentos)

{

    Sumar (z: 8, x: 5, y: 10, c: 6, a: 2.0, b: 3.0);

}

Siempre que nombre los argumentos, puede pasarlos en cualquier orden y el compilador no marcará ningún error, es decir, esto es perfectamente válido en C #.

Usar parámetros opcionales en C #

Los parámetros opcionales en el lenguaje de programación C # le permiten especificar argumentos en una firma de método que el llamador del método puede omitir libremente. En otras palabras, aunque debe especificar valores para los parámetros obligatorios, puede optar por no especificar valores para los parámetros opcionales. En algunos casos, un parámetro opcional también puede tener un valor predeterminado asociado.

El valor predeterminado de un parámetro opcional puede tener cualquiera de tres tipos de valores: una expresión constante, una expresión que tiene la forma de un tipo de valor o una expresión que tiene la forma predeterminada (v) donde v es un valor tipo.

El método Add que se muestra en el siguiente fragmento de código ilustra cómo puede especificar argumentos opcionales para un método en C #.

public static int Add (int x, int y = 0, int z = 0)

{

    devuelve x + y + z;

}

Y así es como puede llamar al método Add.

Agregar (10);

Debido a que dos de los parámetros del método Add son opcionales, puede pasar un único valor entero al método al llamarlo. Tenga cuidado de seguir el orden correcto de definición de parámetros en un método. Los parámetros obligatorios deben ir primero, seguidos de los parámetros opcionales, si existen.

Se introdujeron parámetros con nombre y opcionales en el lenguaje de programación C # para mejorar la interoperabilidad con las API COM. El uso de parámetros con nombre puede mejorar la legibilidad del código fuente. Y puede aprovechar los parámetros opcionales como reemplazo del uso de métodos sobrecargados cuando la definición del método es idéntica.

Cómo hacer más en C #:

  • Cómo usar interfaces fluidas y encadenamiento de métodos en C #
  • Cómo realizar pruebas unitarias de métodos estáticos en C #
  • Cómo refactorizar objetos de Dios en C #
  • Cómo usar ValueTask en C #
  • Cómo utilizar la inmutabilidad en C
  • Cómo usar const, readonly y static en C #
  • Cómo usar anotaciones de datos en C #
  • Cómo trabajar con GUID en C # 8
  • Cuándo usar una clase abstracta frente a una interfaz en C #
  • Cómo trabajar con AutoMapper en C #
  • Cómo usar expresiones lambda en C #
  • Cómo trabajar con delegados Action, Func y Predicate en C #
  • Cómo trabajar con delegados en C #
  • Cómo implementar un registrador simple en C #
  • Cómo trabajar con atributos en C #
  • Cómo trabajar con log4net en C #
  • Cómo implementar el patrón de diseño del repositorio en C #
  • Cómo trabajar con la reflexión en C #
  • Cómo trabajar con filesystemwatcher en C #
  • Cómo realizar la inicialización diferida en C #
  • Cómo trabajar con MSMQ en C #
  • Cómo trabajar con métodos de extensión en C #
  • Cómo usar expresiones lambda en C #
  • Cuándo usar la palabra clave volátil en C #
  • Cómo usar la palabra clave yield en C #
  • Cómo implementar polimorfismo en C #
  • Cómo construir su propio programador de tareas en C #
  • Cómo trabajar con RabbitMQ en C #
  • Cómo trabajar con una tupla en C #
  • Explorando métodos virtuales y abstractos en C #
  • Cómo usar Dapper ORM en C #
  • Cómo usar el patrón de diseño flyweight en C #