Recomendado, 2024

La Elección Del Editor

Diferencia entre ref y out en C #

"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 principal diferencia entre la palabra clave ref y out. La palabra clave ref permite que el método llamado altere el contenido del argumento que se le pasa con la palabra clave ref. La palabra clave out 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 una tabla de comparación.

Gráfica comparativa

Bases para la comparaciónÁrbitroAfuera
BASICPermite la alteración en el valor del argumento procedido 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 a ser modificado por un método se declara como ref mientras que la declaración del método y el método se invocan.El parámetro a devolver debe ser declarado como ref mientras que la declaración de método y el método de llamada

Definición de palabra clave de referencia

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

 utilizando el sistema; clase DemoRef {public void Square (ref int s) {s = s * s; }} clase 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); // Se usó ref Keyword Console.WriteLine ("a after call:" + a); }} // generar una llamada de método anterior: 10 una llamada de método posterior: 100 

En el código anterior, la variable 'a' se pasa como un argumento al método Square (ref a) junto con el modificador de parámetro ref que se le adjunta. Significa que cualquier cambio que el método Square (ref a) realizará en la variable 'a' dentro, 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ámetro "ref".

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

Definición de la 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, la palabra clave "out" debe usarse junto con los parámetros que desea devolver cuando se termina el método. A veces ocurre que cuando no queremos pasarle nada al método, sino que queremos que el método devuelva algo, usamos parámetros con una palabra clave out. Vamos a entenderlo con un ejemplo.

 utilizando el sistema; clase DemoOut {public int Descomponer (doble x, doble fracción) {int whole_num; whole_num = (int) x; fracción = x - todo_num; return todo_num; }} clase Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; doble fractura i = ob.Decompose (100.125, out frac); // usa la palabra clave Console.WriteLine ("la parte del número entero es" + i); Console.WriteLine ("la parte de la 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 regresa con la palabra clave "return", es decir, whole_num, y otro, devuelve un parámetro que está precedido por la palabra clave out mientras que el método llama, es decir, "frac".

Los puntos importantes a recordar sobre la palabra clave de salida.

  • 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 de salida, ya que se considera como 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 finalice el método.
  • La palabra clave de salida también es aplicable a la variable de referencia.

Las diferencias clave entre la referencia y la salida en C #

  1. Cuando una variable precedida por la palabra clave ref se pasa a cualquier método, los cambios que se le hacen dentro del método se reflejan en su valor original. Cuando una variable pasada a un método es precedida por una 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 pase por la referencia a un método, se pueden usar la palabra clave ref y out. Considerando que, la razón para usar ambas palabras clave es diferente cuando la palabra clave ref se puede usar para modificar 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 de salida.

Top