Như tôi đã nói trên, mỗi phương thức sẽ có một giá trị duy nhất được trả về, mặc dù giá trị này có thể là một tập hợp các giá trị. Đôi khi chúng ta muốn phương thức trả về nhiều hơn một giá trị. Cách thực hiện là tạo ra cách tham số dưới hình thức tham chiếu. Khi bạn truyền tham chiếu, trong phương thức bạn sẽ xử lý và gán các giá trị mới cho các tham chiếu này và kết quả là sau khi phương thức thực hiện xong ta dùng các tham số truyền vào như là các kết quả trả về. Để làm việc này bạn phải thêm từ khóa ref (viết tắt của reference) vào trước các tham số trong phần khai báo phương và lời gọi phương thức.
Ví dụ để các biến theHour, theMinute, theSecond trong ví dụ trên sau khi được xử lý trong GetTime sẽ có giá trị như chúng vừa được gán, chúng ta sẽ phải làm như sau:
Đầu tiên thêm khai báo ref vào trước các tham số trong phương thức GetTime(): public void GetTime(ref int h, ref int m, ref int s)
{
h = Hour; m = Minute; s = Second; }
Tiếp theo là sẽ gọi phương thức GetTime dưới dạng truyền tham chiếu như sau:
t.GetTime(ref theHour, ref theMinute, ref theSecond);
Tóm lại cơ chế truyền tham số dạng tham chiếu sẽ thực hiện trên chính đối tượng được đưa vào. Còn cơ chế truyền tham số giá trị thì sẽ tạo ra các bản sao các đối tượng được truyền vào, do đó mọi thay đổi bên trong phương thức không làm ảnh hưởng đến các đối tượng được truyền vào dưới dạng giá trị.
Bài 10: Overloading Method
Function Overloading dựa trên kiểu giá trị tham số truyền vào. Function Overloading dựa trên số lượng tham số truyền vào. Ví dụ class Library { // Function Overloading public void insertbooks(int id) {
// }
public void insertbooks(int id, int type) {
// }
public void insertbooks(string id, int type) { // } }
Ba hàm insertbooks ở trên là một ví dụ về function overloading trong lập trình C#. Trong khi hàm thứ nhất và thứ 2 là overloading theo số lượng tham số, và hàm thứ 3 với hàm thứ 2 là overloading theo kiểu tham số truyền vào.
Bài 11:constructor & Destructor
Nội dung bài học
Khái niệm constructor và destructor Instance constructor và static constructor