Saltar al contenido
Menú
El blog de Kañaz
  • Inicio
  • Acerca de
  • Github
  • Youtube
  • LinkedIn
  • Twitter
El blog de Kañaz

Paso de valores por referencia y por valor en C#

Publicada el 31 mayo, 2017
Twittear

Cuando creas proyectos de código es importante que puedas manipular los valores de tus variables de la manera que mejor te interese y no en todos los casos esperas que el resultado sea el mismo. Las ventajas que tienes con esto es que podrías optimizar mucho tu funcionalidad y ahorrarte muchos dolores de cabeza.

Modificadores REF y OUT

Los modificadores ref y out son especialmente útiles para estos casos. Hagamos un ejemplo y veamos los resultados, para este caso, con una aplicación de consola tendremos más que suficiente (lo sé, no puedo ocultar mi amor por este tipo de apps!).

Ya que tengas creada la aplicación, crea algo como esto:

class Program
{
static void Main(string[] args)
{
int valorUno = 0;

MetodoSimple(valorUno);
Console.WriteLine(valorUno);

Console.ReadLine();
}

static void MetodoSimple(int valorRecibido)
{
valorRecibido = 1;
}
}

Podrás ver al ejecutar el programa que el resultado será el mismo que al inicio, es decir, cero, eso sucede porque el método cambió el valor del parámetro recibido, no cambia el valor de la variable.

Ahora, si hacemos el mismo ejemplo, pero agregamos el modificador ref en el parámetro del método y al invocarlo quedaría de la siguiente manera.

Hacer este cambio resultará en que la aplicación muestre el valor asignado a la variable después de haber pasado por el método y actualizando el dato de la variable, no del valor recibido, a esto se le llama paso por referencia.

Como puedes ver, ambos casos son sumamente diferentes y esto es lo que representa la gran posibilidad de opciones que te había mencionado. Ahora vamos al segundo modificador, la palabra out

El modificador out, es una forma de regresar un valor, algo así como con la palabra return, la gran diferencia es que return solo regresa un valor modificado, quizá en el mejor de los casos, un objeto. Sin embargo mediante out podrás devolver más de un valor y lo más importante es que lo asignas directamente a la variable, no a un nuevo valor recién creado.

Esto complica algunas otras cosas como las pruebas, reflección o implementación al principio, pero hay muchas ventajas en usarlo. Checa el ejemplo:

Suenan a lo mismo ¿no? Bueno, la gran diferencia esta en la aplicación del compilador y al asignar los valores definitivos. Cuando un método invoca al modificador out, el valor será definitivamente asignado.

Así que ahora, además de un simple return, tendrás más posibilidades de trabajar con los valores de tus variables y usarlos de la mejor manera que te convenga.

2 comentarios en «Paso de valores por referencia y por valor en C#»

  1. Jorge Levy dice:
    31 mayo, 2017 a las 9:29 pm

    El buen Amin, te falto aclarar que esto aplica para las variables de ‘tipo de valor’, ya que las de ‘tipo de referencia’ estas se pasan por referencia por default (como su nombre lo indica).

    Saludos.

    Responder
    1. Amin Espinoza dice:
      15 junio, 2017 a las 9:32 am

      Buena esta! Gracias por el dato!

      Responder

Deja una respuesta Cancelar la respuesta

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

Busca en este sitio

MI perfil de Github

Github profile

Sígueme en Twitter

Seguir a @aminespinoza
©2023 El blog de Kañaz | Funciona con SuperbThemes y WordPress