Cấp bậc tác giả:

TRAINING

Destructor trong C#

Được viết bởi QuangIT ngày 27/12/2012 lúc 10:10 AM
Chúng ta đã biết Destructor dùng để hủy một lớp.
  • 0
  • 13743

Destructor trong C#

Chúng ta đã biết Destructor dùng để hủy một lớp. Khi chúng ta sử dụng destructor trong C# ta phải giữ lại các nội dung sau:
• Một lớp chỉ có 1 destructor.
• Destructor không thể kế thừa hoặc là phương thức chồng
• Destructor không cần gọi mà chúng được gọi tự động
• Destructor không có tham số
Ví dụ destructor cho lớp MyClass
MyClass()  
   // Cleaning up  

}  
Khi destructor được thực thi chúng hủy tất cả các biến, tham số. Chúng sẽ kiểm tra tất cả các đối tượng được sử dụng trong ứng dụng, xem xét những đối tượng có thể để hủy đi trên bộ nhớ chính. Khi một destructor được gọi thì tất cả phương thức trên lớp cơ sở sẽ bị hủy theo. Vì vậy trước đó destructor hoàn toàn được chuyển thành:

protected override void Finalize() 
   try 
   { 
      // Cleaning up . 

   } 
   finally 
   { 
      base.Finalize(); 
   } 
}  

Chúng ta sẽ xem xét ví dụ về cách thức gọi một destructor như thế nào. Chúng ta có 3 lớp A, B, C. B kế thừa từ A, và C kế thừa từ B, mỗi lớp đều có riêng phương thức constructor và destructor. Trong lớp program chúng ta tạo lớp C.

class A 
    { 
        public A() 
        { 
            Console.WriteLine("Creating A"); 
        } 
        ~A() 
        { 
            Console.WriteLine("Destroying A"); 
        } 
    } 

    class B : A 
    { 
        public B() 
        { 
            Console.WriteLine("Creating B"); 
        } 
        ~B() 
        { 
            Console.WriteLine("Destroying B"); 
        } 

    } 
    class C : B 
    { 
        public C() 
        { 
            Console.WriteLine("Creating C"); 
        } 
        ~C() 
        { 
            Console.WriteLine("Destroying C"); 
        } 
    } 
    class Program 
    { 
        public static void Main() 
        { 
            C c = new C(); 
            Console.WriteLine("Object Created "); 
            Console.WriteLine("Press enter to Destroy it"); 
            Console.ReadLine(); 
            c = null; 
            Console.Read(); 
        } 
    }  
Chương trình sẽ đợi cho đến khi người dùng nhấn ‘enter’. Khi đó chúng ta sẽ gán lớp C là null. Nhưng như vậy thì destructor của lớp C không được thực hiện. Như chúng ta đã nói, chương trình sẽ không được ‘điều khiển’ khi destructor được gọi bởi chúng sẽ thu dọn tất cả các biến, tham số…Nhưng destructor được gọi khi chương trình kết thúc. Bạn có thể kiểm tra bằng cách gọi một lần nữa và xuất ra file hay màn hình chúng ta sẽ có kết quả: 

Creating A 
Creating B 
Creating C 
Object Created  
Press enter to Destroy it 
Destroying C 
Destroying B 
Destroying A  

Chú ý rằng destructor của các lớp cơ sở cũng được gọi bởi chúng được gọi thông qua

base.Finalize()  
Vì vậy chúng ta có thể sử dụng destructor để kết thúc việc sử dụng một đối tượng nào đó.

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML