InicioInicio BlogBlog portfolioCurriculum ProyectosProyectos videoLinks MyIpodMyIpod calendarContacto rssRSS

Introduccion

En nuestras aplicaciones a veces ocupamos cambiar los valores de una propiedad desde otra clase, en c++ con el manejo engorroso de punteros se podian hacer marravillas delegando a otras clases o metodos, pero insisto a veces es dificil controlar el manejo de punteros dentro de una clase

En .net el manejo de punteros se considera como codigo inseguro, por lo cual no lo recomiendan, pero para esto definieron  una forma de pasar valores por referencia a los metodos, ya que por defecto los valores se pasan por valor y no por referencia.

Existen dos formas de pasar por referencia como parametro, se utilizan la instruccion out y la instruccion ref de la siguiente manera.

valorderetorno nombreDelMetodo(ref tipo nombreparametro)

o

valorderetorno nombreDelMetodo(out tipo nombreparametro)

como ejemplo seria algo asi

 public void setValue(ref String id)
 {
  .......
 }
 public void setValue(out String id)
 {
  ......
 }

El compilador no va a identificar si es ref o out, este no conoce la diferencia pero para nosotros cuando usemos ref la variable tiene que estar inicializada y out no lo necesita.

un ejemplo de esto seria

using System;
using System.Collections.Generic;
using System.Text;
 
namespace Referencias
{
    class ChangeValues
    {
        public void changeWithRef(ref int b, int c)
        {
            b = c;
        }
 
        public void changeWithOut(out  int b, int c)
        {
            b = c;
        }
 
    }
}

y el metodo main seria algo asi

using System;
using System.Collections.Generic;
using System.Text;
 
namespace Referencias
{
    class Program
    {
        static void Main(string[] args)
        {
            int a=10;
            int b;
            System.Console.WriteLine("El valor de a es {0}", a);
            ChangeValues change = new ChangeValues();
            change.changeWithRef(ref a,15);
            change.changeWithOut(out b, 10);
            System.Console.WriteLine("Ahora el valor de a es {0}",a);
            System.Console.WriteLine("El valor de b es {0}", b);
            Console.ReadKey();
 
        }
    }
}

como vemos cuando la clase va a llamar a los metodos tenemos tambien que indicarle que los parametros van a pasar por referencia, sino el compilador nos mandara la exception.

codigo de ejemplo


Sin comentarios a “Apuntes sobre C# valores por referencia”  

  1. No hay comentarios

Deja una respuesta



Categorías

Contacto

RSS Polygonize

Directorio de enlaces

Comparte este artículo

 
kajsdlkhsd