Bài 11: Constructor & Destructor

0
164

Xin chào các bạn . Máy hôm nay bận bịu dòn nhà ăn tết quá nên không có bài viết nào . Hôm nay là 29 và đây là bài viết cuối cùng của năm nay mình dành cho các bạn

Nội dung chúng ta tìm hiểu hôm nay là :

  • Khái niệm constructor và destructor
  • Instance constructor và static constructor

InvokingBaseConstructor

a.Constructor
[box type=”info” ]Constructors (Tạm dịch là phương thức khởi tạo) là những hàm đặc biệt cho phép thực thi, điều khiển chương trình ngay khi khởi tạo đối tượng. Trong C#, Constructors có tên giống như tên của Class và không có giá trị trả về.[/box]
Ví dụ:

class Library { private int ibooktypes; //Constructor public Library() { ibooktypes = 7; } public Library(int value) { ibooktypes = value; } }

b. Destructor
[box type=”info” ]Destructor (tạm dịch là phương thức hủy) là một hàm dùng để hủy đi một thể hiện của một class. Destructor không có đối số, không có từ chỉ thuộc tính truy nhập, và không được gọi tường minh. Destructor của một thể hiện sẽ được gọi tự động khi một thể hiện kết thúc “vòng đời” của nó thông qua bộ thu dọn rác tự động (Garbage Collection). Destructor cũng có tên trùng với tên class. Để khai báo một destructor chúng ta đặt dấu “~” vào trước destructor[/box]

Ví dụ

class Library { private int ibooktypes; //Constructor public Library() { ibooktypes = 7; } public Library(int value) { ibooktypes = value; } //Destructor ~ Library() { //thực thi câu lệnh } }

~Library() là destructor của lớp Library

2. Instance constructor và Static constructor

Như bài học trước tôi đã giới thiệu, Các thành phần trong class có thể là instance và static. Constructors cũng là một thành phần của class, vậy Instance constructors và Static constructors có gì khác nhau? Chúng ta sẽ cùng tìm hiểu.

a. Instance constructor

Một instance constructor( tạm dịch là một bộ khởi dựng thể hiện) sẽ khởi tạo một số giá trị khi một thể hiện của một lớp được tạo ra.

Ví dụ:

class Point { public double x, y; public Point() { this.x = 0; this.y = 0; } public Point(double x, double y) { this.x = x; this.y = y; } public static double Distance(Point a, Point b) { double xdiff = a.x – b.x; double ydiff = a.y – b.y; return Math.Sqrt(xdiff * xdiff + ydiff * ydiff); } public override string ToString() { return string.Format(({0}, {1}), x, y); } } class Test { static void Main() { Point a = new Point(); Point b = new Point(3, 4); double d = Point.Distance(a, b); Console.WriteLine(Distance from {0} to {1} is {2}, a, b, d); } }

Trong lớp Point có 2 instance constructors. Một không có đối số truyền vào và 2 constructor còn lại có 2 tham số kiểu double. Nếu class không có instance constructor nào thì constructor không có đối số sẽ được gọi tự động.

b. Static constructor

Nếu một lớp khai báo một phương thức khởi tạo tĩnh (static constructor), thì được đảm bảo rằng phương thức này sẽ được thực hiện trước bất cứ thể hiện nào của lớp được tạo ra. Static Constructor hữu dụng khi chúng ta cần cài đặt một số công việc mà không thể thực hiện được thông qua chức năng khởi dựng và công việc cài đặt này chỉ được thực duy nhất một lần. Static constructor không có thuộc tính truy cập, không có đối số và không được gọi tường minh mà sẽ được gọi tự động.

Ví dụ:

sing System; using Personnel.Data; class Employee { private static DataSet ds; static Employee() { ds = new DataSet(…); } public string Name; public decimal Salary; … }

Khi đó đối tượng ds sẽ được tạo ra khi trước khi ta tạo một thể hiện lớp emplyee.

LEAVE A REPLY

Please enter your comment!
Please enter your name here