Diferencia entre ref y out en C #

Autor: Laura McKinney
Fecha De Creación: 2 Abril 2021
Fecha De Actualización: 5 Mayo 2024
Anonim
C# Out parameters Vs REF parameters
Video: C# Out parameters Vs REF parameters

Contenido


"Ref" y "Out" son los modificadores de parámetros utilizados en C #. Usando ref y out, puede pasar cualquier tipo de valor por su referencia a cualquier método. La razón de pasar cualquier tipo de valor por su referencia introduce la diferencia principal entre la palabra clave ref y out. los árbitro La palabra clave permite que el método llamado altere el contenido del argumento pasado con la palabra clave ref. los fuera La palabra clave permite que el método llamado devuelva más de un valor en una sola llamada. Estudiemos la diferencia entre ref y out junto con un cuadro de comparación.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónÁrbitroFuera
BásicoPermite que la alteración en el valor del argumento continúe con la palabra clave ref.Permite que un método devuelva esos valores precedidos por una palabra clave out.
InicializaciónEl parámetro ref debe inicializarse antes de la llamada al método.El parámetro out debe inicializarse dentro del método llamado antes de que finalice.
DeclaraciónEl parámetro que debe ser alterado por un método se declara como ref mientras que la declaración y la llamada al métodoEl parámetro a devolver debe declararse como ref mientras se declara el método y se llama al método.


Definición de palabra clave de referencia

La "ref" es un modificador de parámetros que se usa cuando es necesario llamar a un método con llamada por referencia. Cuando deseamos que los cambios realizados en los argumentos dentro de un método llamado se reflejen en el valor original de esa variable, se utiliza el modificador del parámetro ref. El tipo de valor que queremos declarar como referencia está precedido por la palabra clave "ref" durante la declaración del método y la llamada al método. Se puede declarar más de un parámetro como "ref" al llamar y declarar un método.

utilizando el sistema; clase DemoRef {Public void Square (ref int s) {s = s * s; }} class Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("una llamada al método anterior:" + a); ob.Square (ref a); // Utiliza la palabra clave ref Console.WriteLine ("a after call:" + a); }} // genera una llamada al método anterior: 10 una llamada al método posterior: 100

En el código anterior, la variable "a" se pasa como argumento al método Square (ref a) junto con el modificador de parámetro ref adjunto. Significa que cualquier cambio que realice el método Square (ref a) en la variable 'a' dentro de él se reflejará en el valor original de 'a', también fuera del método.


Hay algunos puntos importantes que deben recordarse cuando se trata del modificador de parámetros "ref".

  • El argumento que está pasando por la referencia a un método debe inicializarse antes de llamar al método.
  • El método no debe asignar el valor inicial al argumento ref.
  • También puede usar ref junto con la variable de referencia también.

Definición de palabra clave de salida

Cada vez que llame a un método, devolverá un solo valor. Si desea que un método devuelva más de un valor en una llamada, se debe usar la palabra clave "out" junto con los parámetros que desea devolver cuando se termina el método. A veces es el caso de que cuando no queremos pasar nada al método pero queremos que el método devuelva algo, usamos parámetros con una palabra clave out.Vamos a entenderlo con un ejemplo.

utilizando el sistema; class DemoOut {public int Decompose (doble x, out doble fracción) {int whole_num; entero_num = (int) x; fracción = x - entero_num; return entero_num; }} class Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; doble frac; i = ob. Descomponer (100.125, fuera frac); // usó la palabra clave Console.WriteLine ("La parte del número entero es" + i); Console.WriteLine ("la parte de fracción es" + frac); }} // salida La parte entera es 100 La parte fraccional es 0.125

En el código anterior, el método Decompose () devuelve dos valores. Uno devuelve la palabra clave "return", es decir, entero_num, y otro devuelve un parámetro precedido por la palabra clave out mientras llama al método, es decir, "frac".

Los puntos importantes para recordar acerca de la palabra clave out.

  • A diferencia de la palabra clave ref, el parámetro que usa la palabra clave out no debe inicializarse antes de llamar al método.
  • El método llamado asignará un valor al parámetro con una palabra clave out, ya que se considera no asignado dentro del método llamado, es decir, se supone que no tiene un valor inicial.
  • El método llamado debe asignar un valor al parámetro out antes de que el método finalice.
  • La palabra clave out también es aplicable a la variable de referencia.
  1. Cuando una variable precedida por la palabra clave ref se pasa a cualquier método, los cambios realizados dentro del método se reflejan en su valor original. Cuando una variable pasada a un método está precedida por la palabra clave out, el método la devuelve sin usar la palabra clave return.
  2. El parámetro ref debe inicializarse antes de pasarlo a un método. Por otro lado, el parámetro out debe inicializarse dentro del método al que se pasa.
  3. Al llamar, declarar o definir un método, el parámetro ref se declara explícitamente como ref. Por otro lado, al llamar, declarar o definir un método, el parámetro out se declara explícitamente como out.

Conclusión:

Siempre que la variable se pase por la referencia a un método, se puede usar la palabra clave ref y out. Mientras que, la razón de usar ambas palabras clave es diferente cuando la palabra clave ref se puede usar para alterar el valor del argumento precedido por la palabra clave ref, se pasa al método llamado y la palabra clave out se usa para devolver el valor del argumento precedido por la palabra clave out.