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; } } }
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()); } } }
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