referencia en C#

La palabra clave ref en C# se usa para pasar o devolver referencias de valores hacia o desde Methods . Básicamente, significa que cualquier cambio realizado en un valor que se pasa por referencia reflejará este cambio ya que está modificando el valor en la dirección y no solo el valor. Se puede implementar en los siguientes casos:
 

  • Para pasar un argumento a un método por su referencia.
  • Para definir una firma de método para devolver una referencia de la variable.
  • Para declarar una estructura como una estructura ref
  • Como referencia local

Ejemplo 1: Aquí, definimos dos métodos addValue y subtractValue . El método addValue es un método que solo modifica el valor de su parámetro. Por lo tanto, cuando se muestra el valor de ‘a’ después de pasarlo como parámetro a addValue, no hay diferencia en su valor. Mientras que el método subtractValue utiliza la referencia del parámetro, la palabra clave ref indica lo mismo. Por lo tanto, cuando se muestra el valor de ‘b’ después de pasarlo como parámetro a subtractValue , puede ver que los cambios se reflejan en su valor. La palabra clave ref debe usarse en la definición del método, así como cuando se llama al método.
 

C#

// C# program to illustrate the
// use of ref keyword
using System;
 
namespace ref_keyword {
 
class GFG {
 
    // Main Method
    static void Main(string[] args)
    {
 
        // Initialize a and b
        int a = 10, b = 12;
 
        // Display initial values
        Console.WriteLine("Initial value of a is {0}", a);
        Console.WriteLine("Initial value of b is {0}", b);
        Console.WriteLine();
 
        // Call addValue method by value
        addValue(a);
 
        // Display modified value of a
        Console.WriteLine("Value of a after addition"+
                              " operation is {0}", a);
 
        // Call subtractValue method by ref
        subtractValue(ref b);
 
        // Display modified value of b
        Console.WriteLine("Value of b after "+
            "subtraction operation is {0}", b);
    }
 
    // Define addValue
    // Parameters passed by value
    public static void addValue(int a)
    {
        a += 10;
    }
 
    // Define subtractValue
    // Parameters passed by ref
    public static void subtractValue(ref int b)
    {
        b -= 5;
    }
}
}
Producción

Initial value of a is 10
Initial value of b is 12

Value of a after addition operation is 10
Value of b after subtraction operation is 7

Ejemplo 2: también puede usar la palabra clave ref con una instancia de una clase. En el programa que se muestra a continuación, tenemos una clase Complex para representar números complejos. La clase también consta de un método de actualización que utiliza la referencia del objeto y refleja las actualizaciones realizadas en el valor de la parte real e imaginaria del objeto.
 

C#

// C# program to show the use of ref
// with  an instance of a class
using System;
 
namespace class_ref {
 
class Complex {
 
    private int real, img;
 
    // Parameterize Constructor
    public Complex(int r, int i)
    {
        real = r;
        img = i;
    }
 
    // Method to get value of real
    public int getRealValue()
    {
        return real;
    }
 
    // Method to get value of img
    public int getImgValue()
    {
        return img;
    }
 
    // Method to update value of complex
    // object Using reference of the object
    public static void Update(ref Complex obj)
    {
        obj.real += 5;
        obj.img += 5;
    }
}
 
class GFG {
 
    // Main Method
    static void Main(string[] args)
    {
        // Declare Complex object
        Complex C = new Complex(2, 4);
        Console.WriteLine("Complex number C = " + C.getRealValue() +
                                         " + i " + C.getImgValue());
 
        // Call update method
        // Pass ref of C
        Complex.Update(ref C);
        Console.WriteLine("After updating C");
        Console.WriteLine("Complex number C = " + C.getRealValue() +
                                         " + i " + C.getImgValue());
    }
}
}
Producción: 

Complex number C = 2 + i 4
After updating C
Complex number C = 7 + i 9

 

Publicación traducida automáticamente

Artículo escrito por ManasiKirloskar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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