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 }
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 }
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