Parámetro de salida con ejemplos en C# – Part 1

La salida es una palabra clave en C# que se usa para pasar los argumentos a los métodos como un tipo de referencia. Generalmente se usa cuando un método devuelve múltiples valores.

Puntos importantes:

  • Es similar a la palabra clave ref. Pero la principal diferencia entre la palabra clave ref y out es que ref necesita que la variable se inicialice antes de pasar al método. Pero el parámetro de salida no requiere que las variables se inicialicen antes de pasar al método. Pero antes de que devuelva un valor al método de llamada, la variable debe inicializarse en el método llamado.
  • También es similar a la palabra clave in, pero la palabra clave in no permite que el método que llamó cambie el valor del argumento, pero ref lo permite.
  • Para usar la palabra clave out como parámetro, tanto la definición del método como el método de llamada deben usar la palabra clave out explícitamente.
  • Los parámetros de salida no se pueden usar en métodos asincrónicos.
  • No se permite el uso de los parámetros de salida en los métodos de iterador.
  • Puede haber más de un parámetro de salida en un método.
  • En el momento de la llamada al método, el parámetro de salida se puede declarar en línea. Pero se puede acceder a los parámetros de salida en línea en el mismo bloque de código donde llama.
  • La sobrecarga de métodos también se puede realizar utilizando parámetros.
  • Las propiedades no se pueden pasar como parámetros dado que no son variables.
  • Hasta C# 6.0, un usuario primero declara la variable y luego solo puede pasarla como un argumento de salida. Pero a partir de C# 7.0, a excepción de una declaración de variable separada, el usuario también puede declarar la variable de salida en la lista de argumentos de la llamada al método.

Declaración de nuestro parámetro:  

// No need to initialize 
// the variable here
data_type variable_name;

Method_Name(out variable_name);

// you can also convert both above two 
// lines of codes as follows from
//  C# 7.0 onwards
Method_Name(out data_type variable_name);

Aquí, el valor de variable_name debe inicializarse en el método llamado antes de que devuelva un valor. 

Ejemplo: 

C#

// C# program to illustrate the
// concept of out parameter
using System;
 
class GFG {
 
    // Main method
    static public void Main()
    {
 
        // Declaring variable
        // without assigning value
        int i;
 
        // Pass variable i to the method
        // using out keyword
        Addition(out i);
 
        // Display the value i
        Console.WriteLine("The addition of the value is: {0}", i);
    }
 
    // Method in which out parameter is passed
    // and this method returns the value of
    // the passed parameter
    public static void Addition(out int i)
    {
        i = 30;
        i += i;
    }
}
Producción: 

The addition of the value is: 60

 

Múltiples parámetros de salida: en C#, un usuario puede pasar múltiples parámetros de salida al método y el método devuelve múltiples valores. 

Ejemplo: en el siguiente código, declaramos dos variables de valor sin inicializar, es decir, int i, j;. Ahora pasamos estos parámetros al método Addition usando una palabra clave como Addition(out i, out j);. El valor de estas variables se asigna en el método en el que pasaron. 

C#

// C# program to illustrate the
// concept of multiple out parameter
using System;
 
class GFG {
 
    // Main method
    static public void Main()
    {
 
        // Declaring variables
        // without assigning values
        int i, j;
 
        // Pass multiple variable to
        // the method using out keyword
        Addition(out i, out j);
 
        // Display the value i and j
        Console.WriteLine("The addition of the value is: {0}", i);
        Console.WriteLine("The addition of the value is: {0}", j);
    }
 
    // Method in which out parameters
    // are passed and this method returns
    // the values of the passed parameters
    public static void Addition(out int p, out int q)
    {
        p = 30;
        q = 40;
        p += p;
        q += q;
    }
}
Producción: 

The addition of the value is: 60
The addition of the value is: 80

 

Mejora del parámetro de salida en C# 7.0: en C# 7.0, se agregaron algunas características nuevas al parámetro de salida y las características son: 

  • En C# 7.0, el parámetro de salida puede pasar sin su declaración e inicialización, lo que se denomina declaración en línea del parámetro de salida o parámetro de salida de tipo implícito . Su alcance se limita al cuerpo del método, es decir, alcance local.
  • El parámetro out puede usar el tipo var en la lista de parámetros del método.
  • En el parámetro de salida, no es obligatorio que el nombre del parámetro de salida sea el mismo tanto en la definición como en la llamada.
  • También se puede utilizar en Try Pattern.

Ejemplo: Los siguientes programas demuestran la declaración en línea del parámetro Out. Aquí la línea de código, es decir, Area(out int length, out int width, out int Rarea); contiene la declaración en línea del parámetro Out ya que estas variables se declaran directamente dentro de la llamada al método. El valor de las variables se inicializa en el método en el que pasaron.

Nota: Debe solicitar la versión C# 7.0 para ejecutar este ejemplo.

Ejemplo:  

C#

// C# program to illustrate the
// concept of out parameter
using System;
 
class GFG
{
 
    // Main method
    static public void Main()
    {
 
        // In-line declaring variables
        // without assigning values
        // Passing multiple variable to
        // the method using out keyword
        Area(out int length, out int width, out int Rarea);
 
        // Display the value length, width, and Rarea
        System.Console.WriteLine("Length of the rectangle is: "+ length);
        System.Console.WriteLine("Width of the rectangle is: "+ width);
        System.Console.WriteLine("Area of the rectangle is: "+ Rarea);
        Console.ReadLine();
    }
 
    // Method in which out parameters are passed
    // and this method returns the values of
    // the passed parameters
    public static void Area(out int p, out int q, out int Rarea)
    {
        p = 30;
        q = 40;
        Rarea = p * q;
    }
}

Producción: 

Length of the rectangle is  : 30
Width of the rectangle is : 40
Area of the rectangle is : 1200

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *