This article is currently in the process of being translated into Vietnamese (~98% done).
Constructors and destructors
Hàm khởi tạo là phương thức đặc biệt, được dùng để tạo thể hiện lớp. Một hàm khởi tạo có thể không trả về cái gì, đó là lý do bạn không cần khai báo kiểu trả về cho nó. Một hàm khởi tạo thông thường như sau:
public string Describe()
Một hàm khởi tạo có thể định nghĩa như sau:
public Car()
Trong ví dụ của chúng ta ở chương này, chúng ta có lớp Car với hàm khởi tạo lấy chuỗi là đối số. Tất nhiên, một hàm khởi tạo có thể nạp chồng (overloading), có nghĩa là chúng ta có nhiều hàm khởi tạo với cùng tên nhưng khác tham số. Đây là ví dụ:
public Car()
{
}
public Car(string color)
{
this.color = color;
}
Một hàm khởi tạo có thể gọi hàm khởi tạo khác. Ví dụ:
public Car()
{
Console.WriteLine("Constructor with no parameters called!");
}
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
Nếu bạn chạy code thì bạn thấy rằng hàm khởi tạo không có tham số sẽ được gọi trước. Nó có thể dùng để khởi tạo nhiều đối tượng khác nhau trong class với hàm khởi tạo mặc định, nó có thể được gọi từ hàm khởi tạo khác trong class. Nếu hàm khởi tạo có tham số thì bạn cũng có thể dùng. Đây là một ví dụ đơn giản:
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
public Car(string param1, string param2) : this(param1)
{
}
Nếu bạn gọi hàm khởi tạo có hai tham số thì tham số đầu tiên sẽ được lấy để gọi hàm khởi tạo có tham số đó.
Destructors
Vì C# có cơ chế tự giải phóng, framework tự động giải phóng đối tượng mà bạn không dùng nữa, cũng có một số thứ phải tự giải phóng. Hàm hủy, là phương thức được gọi khi giải phóng đối tượng, có thể được dùng để xóa tài nguyên được dùng bởi đối tượng. Hàm hủy không giống các hàm khác trong C#. Đây là một ví dụ về hàm hủy trong lớp Car:
~Car()
{
Console.WriteLine("Out..");
}
Một khi đối tượng được xóa bởi garbage collector thì phương thức này được gọi.