Destructores en C#

Los destructores en C# son métodos dentro de la clase que se usan para destruir instancias de esa clase cuando ya no se necesitan. El Destructor es llamado implícitamente por el recolector de basura de .NET Framework y, por lo tanto, el programador no tiene control sobre cuándo invocar el destructor. Una variable de instancia o un objeto son aptos para la destrucción cuando ya no se puede acceder a ellos.

Puntos importantes:

  • Un Destructor es exclusivo de su clase, es decir, no puede haber más de un destructor en una clase.
  • Un Destructor no tiene tipo de retorno y tiene exactamente el mismo nombre que el nombre de la clase (Incluyendo el mismo caso).
  • Se distingue de un constructor por el símbolo de tilde (~) que precede a su nombre.
  • Un Destructor no acepta parámetros ni modificadores.
  • No se puede definir en Estructuras. Solo se usa con clases.
  • No se puede sobrecargar ni heredar.
  • Se llama cuando el programa sale.
  • Internamente, Destructor llamó al método Finalize en la clase base del objeto.

Sintaxis:

class Example
{ 
    // Rest of the class
    // members and methods.

   // Destructor
   ~Example()
    {
        // Your code
    }

} 

Ejemplo 1:

// C# Program to illustrate how 
// a destructor works
using System;
  
namespace GeeksforGeeks {
      
class Complex {
      
    // Class members, private 
    // by default
    int real, img;
  
    // Defining the constructor
    public Complex()
    {
        real = 0;
        img = 0;
    }
  
    // SetValue method sets 
    // value of real and img
    public void SetValue(int r, int i)
    {
        real = r;
        img = i;
    }
  
    // DisplayValue displays 
    // values of real and img
    public void DisplayValue()
    {
        Console.WriteLine("Real = " + real);
        Console.WriteLine("Imaginary = " + img);
    }
  
    // Defining the destructor
    // for class Complex
    ~Complex()
    {
        Console.WriteLine("Destructor was called");
    }
      
} // End class Complex
  
  
// Driver Class
class Program {
      
    // Main Method
    static void Main(string[] args)
    {
          
        // Creating an instance of class 
        // Complex C invokes constructor
        Complex C = new Complex();
  
        // Calling SetValue method using
        // instance C Setting values of 
        // real to 2 and img to 3
        C.SetValue(2, 3);
  
        // Displaying values of real
        // and imaginary parts
        C.DisplayValue();
  
        // Instance is no longer needed
        // Destructor will be called
          
    } // End Main
      
} // End class Program
  
}
Producción:

Real = 2
Imaginary = 3
Destructor was called

Explicación: En el ejemplo anterior, la clase consta de un constructor Complex() , un método SetValue para establecer el valor de la instancia de la clase compleja , un método DisplayValue para mostrar el valor de la instancia y un Destructor ~Complex() para destruir el objeto cuando ya no se requiere la instancia, imprime el mensaje “Se llamó a Destructor”, que depende del programador qué mensaje quiere mostrar o también se puede dejar en blanco.

Ejemplo 2:

// C# Program to illustrate how 
// a destructor works
using System;
using System.IO;
  
namespace GeeksforGeeks {
      
public class Vect {
      
    // Class members, private
    // by default
    double i, j, k;
  
    // Defining the constructor
    public Vect()
    {
        i = 0.0;
        j = 0.0;
        k = 0.0;
        Console.WriteLine("An instance of "+
                      "Vect class created");
    }
  
    // SetVector method sets 
    // the value of i, j, k
    public void SetVector(double iComponent,
                          double jComponent, 
                          double kComponent)
    {
        i = iComponent;
        j = jComponent;
        k = kComponent;
    }
  
    // FindMagnitude calculates the 
    // value of the vector's magnitude
    public double FindMagnitude()
    {
        double m = 0.0;
        m = Math.Sqrt(i * i + j * j + k * k);
        return m;
    }
  
    // Defining the Destructor
    // for class Vect
    ~Vect()
    {
        Console.WriteLine("The instance of"+
                   " Vect class Destroyed");
    }
      
} // End class Vect
  
  
// Driver Class
class Procedure {
      
    // Main Method
    static void Main(string[] args)
    {
        // Creates an instance of Vect 
        // class Calls the constructor
        Vect V1 = new Vect();
  
        // SetVector method is called 
        // with values 2.3, 1.5 and 7.0
        V1.SetVector(2.3, -1.5, 7.0);
  
        // Prints value of magnitude of 
        // vector calculated by the 
        // FindMagnitude method
        Console.WriteLine("Magnitude of the vector "+
            "2.3i-1.5j+7k is " + V1.FindMagnitude());
  
        // Instance is destroyed 
        // since no longer needed
          
    } // End Main
      
} // End class Procedure
  
}
Producción:

An instance of Vect class created
Magnitude of the vector 2.3i-1.5j+7k is 7.51930847884298
The instance of Vect class Destroyed

Explicación: En este ejemplo, tenemos la clase Vect que representa una cantidad física un vector. La clase consta de tres componentes i , j y k . Los métodos de la clase incluyen el constructor Vect() que establece todos los componentes a cero, un método SetVector para establecer el valor de la instancia, un método FindMagnitude para calcular la magnitud de la instancia con la que se llama y un destructor ~Vect( ) que destruirá la instancia V1 cuando ya no sea necesaria.

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 *