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.










Sin comentarios a “Apuntes sobre C# valores por referencia”
Por favor espera
Deja una respuesta