Увод у Деструктор у Ц #

У чланку Деструктор у Ц # као што му и име каже, деструктори су методе у Ц # који уништавају објекте. Ако објекти више нису потребни, онда се позива деструктор да уништи те предмете из класе. Деструктор ће аутоматски позвати сакупљач смећа и уништити предмете.

Синтакса:

class Demo
(
// other methods
~Demo() // destructor
(
// your code
)
)
C# destructor is a shortcut of Finalize( ) method. So when you declare destructor
~Demo() // destructor
(
// your code
)
C# compiler will translate it to:
protected override void Finalize()
(
try
(
// your code
)
finally
(
base.Finalize();
)
)

Деструктор је представљен са ~ (тилде).

Својства Деструктора у Ц #

Следе особине деструктора:

  1. Деструктори не могу имати никакве параметре и модификаторе приступа.
  2. Свака класа треба да се састоји од само једног деструктора.
  3. Деструктори се не могу преоптеретити или наследити.
  4. Име деструктора увек је исто као и име класе и нема повратни тип.
  5. Деструктор користи методу Финализе и позива га Гарбаге Цоллецтор када предмети више нису потребни.
  6. Деструктор слиједи обрнут образац. У деструктору, изведена класа се назива прво, а затим основна класа.

Како Деструктор ради у Ц #?

Ево неколико примера који показују како то функционише у Ц #.

Пример # 1

Шифра:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Destructor
(
class person
(
//variables
public string name;
public int age;
public person(string name, int age) //parametrized constructor
(
this.name = name;
this.age = age;
)
public string getName()
(
return this.name;
)
public int getAge()
(
return this.age;
)
~person() // destructor
(
Console.WriteLine("Destructor has been invoked");
)
)
class Program
(
// main method
static void Main(string() args)
(
person Details = new person("Joe", 28);
Console.WriteLine(Details.getName());
Console.WriteLine(Details.getAge());
)
)
)

У горњем примјеру, параметризирани конструктор се иницијализира с именом и доби параметра гдје је ово кључна ријеч која се односи на варијабле класе. Након тога се ствара деструктор са истим именом као и име класе и симбол ~. У главном методу постоји предмет особе из класе. Након добијања имена и старости особе, предмети више нису потребни. Тако се зове деструктор који уништава предмете и додељује им сећање.

Излаз:

Пример бр. 2

Шифра:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
anmespace Destructor
(
class person
(
// variables
public string name;
public int age;
public person(string name, int age) // parameterized constructor
(
this.name = name;
this.age = age;
)
public string getName()
(
return this.name;
)
public int getAge()
(
return this.age;
)
~person() //destructor
(
Console.WriteLine("Descructor has been invoked");
)
)
class Program
(
// Main method
static void Main(string() args)
(
person Details = new person("Joe", 28); // first object
person Details1 = new person("John", 20);
Console.WriteLine(Details.getName());
Console.WriteLine(Details.getAge());
Console.WriteLine(Details1.getName());
Console.WriteLine(Details1.getAge());
)
)
)

Овај пример је скоро исти као претходни пример, али у овом примеру су два главна предмета у главној методи. Као што знамо, конструктор покреће сваки предмет и та иста ствар се примењује и за деструктор. У овом случају, деструктор се позива два пута и додељује меморију сваког објекта.

Излаз:

Пример бр. 3

Шифра:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Destructor
(
public class Parent
(
~Parent() // base destructor
(
Console.WriteLine("Parent.~Parent()");
)
)
public class Child : Parent
(
~Child() // derived destructor
(
Console.WriteLine("Child.~Child()");
)
)
public class MainClass
(
static void Main()
(
Child child = new Child();
)
)
)

У горњем примјеру дефинирана је родитељска класа која има деструктор. Затим дечија класа наслеђује родитељску класу и састоји се од деструктора. Тако деструктор за децу аутоматски зове основни деструктор.

У конструкторима се прво зове основни конструктор. На пример, ако имамо основну класу А која наслеђује класу Б, па се у случају конструктора класа А назива прво, а затим класа Б. Међутим, у случају деструктора класа Б (изведена класа) се зове прво пре класе А ( основна класа).

Још један пример извршења налога: -

Шифра:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Destructor
(
class Tree
(
~Tree()
(
System.Console.WriteLine("This is the first destructor");
)
)
class Branch: Tree
(
~Branch()
(
System.Console.WriteLine("This is the second destructor");
)
)
class Flower: Branch
(
~Flower()
(
System.Console.WriteLine("This is the third destructor");
)
)
class Test
(
static void Main()
(
Flower f= new Flower();
)
)
)

Излаз:

Као што видите, у почетку се зове трећи конструктор, а затим други и први.

Пример бр. 4

Шифра:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Destructor
(
class Example
(
public Example()
(
// constructor
Console.WriteLine("Object Created");
)
// Destructor
~Example()
(
Console.WriteLine("Object Destroyed");
)
)
class Program
(
public static void Sample()
(
Example ex = new Example();
)
static void Main(string() args)
(
Sample();
GC.Collect();
Console.ReadLine();
)
)
)

Излаз:

Деструктор распоређује меморију објекта ако им није потребна на крају програма. Али понекад ако користимо ГЦ.Цоллецт () усред извођења програма, он ће уништити објекте у средини и доделити им меморију тих објеката. Деструктор се може позвати имплицитно или експлицитно. Али нема потребе да експлицитно уништавате објекте јер Ц # обезбеђује сакупљање смећа. Међутим, када завршите са управљаним ресурсима, мораћете да их изричито ослободите. Нема потребе да се позивају или случајеви управљају ресурсима. Користите деструктор за руковање неуправљаним ресурсима. Скупљач смећа позваће деструктора јер се састоји од списка објеката који имају деструктор. Дакле, кад год се неки предмет креира или уништи, листа се ажурира. Ако у реду стоји неки предмет, сакупљач смећа га сакупља након извршења деструктора.

Закључак

Главна сврха деструктора је да ослободи меморију објеката након њиховог извођења. Дакле, у деструктору се извршавају различите радње попут опоравка простора, ослобађања мрежних ресурса и закључавања ресурса итд. Деструктори се требају користити за ослобађање неуправљаних ресурса, а не управљаних ресурса.

Препоручени чланак

Ово је водич за Деструктор у Ц #. Овде смо расправљали о уводу, својствима као и примерима деструктора у Ц #. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -

  1. Увод у Деструцтор на Јави
  2. Наслеђивање у Ц # | Топ 4 врсте
  3. Копирајте конструктор у Ц # (примери)
  4. Шта је Мултитхреадинг у Ц #? | Предности
  5. Деструктор на Питхон-у (Предности са примером)
  6. Приступите модификаторима на ПХП-у
  7. Врсте конструктора у Ц # са имплементацијом кода
  8. Стварање и методе мултитхреадинг-а у Ц #

Категорија: