Mất 2 phút đọc

Hàm trong C#

Nội dung

  • Khái niệm về hàm
  • Tại sao nên viết hàm
  • Tham số hình thức & tham số thực
  • Truyền tham trị và truyền tham biến trong hàm

Hàm là gì?

  • Hàm là một khối lệnh thực hiện một công việc hoàn chỉnh (module), được đặt tên và được gọi thực thi nhiều lần tại nhiều vị trí  trong chương trình.
  • Hàm còn gọi là chương trình con ,phương thức, hành vi
  • Hàm có thể được gọi từ chương trình chính (hàm main) hoặc từ 1 hàm khác.
  • Hàm có giá trị trả về hoặc không. Nếu hàm không có giá trị trả về gọi là thủ tục (procedure)
  • Mục đích cuối cùng của hàm là?

Khai báo hàm

  • <kiểu trả về> <Tên hàm>(<kiểu biến 1> <tham số 1>, …)

{
Nội dung hàm;
[return <giá trị trả về>];
}

Đặt tên hàm

  • Tương tự cách đặt tên biến
  • Dùng động từ

Ví dụ

private int TinhGiaiThua(int n)
{
int giaiThua = 1;
for (int i = 1; i <= n; i++)
{
giaiThua *= i;
}
return giaiThua;
}

Tham số hình thức & tham số thực

  • Khi hàm cần nhận đối số (arguments) để thực thi thì khi khai báo hàm cần khai báo danh sách các tham số để nhận giá trị từ chương trình gọi. Các tham số này được gọi là tham số hình thức.

Ví dụ:

  • Khi gọi hàm, ta cung cấp các giá trị thật, các giá trị này sẽ được sao chép vào các tham số hình thức và các giá trị thật được gọi là tham số thực.

Ví dụ:

Truyền tham trị và tham chiếu trong hàm

Truyền tham trị (call by value)

Sao chép giá trị của đối số vào tham số hình thức của hàm.

  • Những thay đổi của tham số không ảnh hưởng đến giá trị của đối số.

Truyền tham chiếu (call by reference)

  • Sao chép địa chỉ của đối số vào tham số hình thức. Do đó, những thay đổi đối với tham số sẽ có tác dụng trên đối số.

Sử dụng từ khoá ref hoặc out

Tham số kiểu đa trị (mảng, đối tượng…) mặc định là truyền theo tham chiếu (tức là không cần dùng từ khóa ref hoặc out)

Ví dụ 1:

private int TangSo(out int i)
{
i = i + 1;
return i;
}
int a = 10;
int b = TangSo(out a);

Kết quả:

  • a = 11
  • b = 11

Ví dụ 2:

private int TangSo(ref int i)
{
i = i + 1;
return i;
}
int a = 10;
int b = TangSo(ref a);

Kết quả

  • a = 11
  • b = 11

Sự khác biệt giữa refout là gì?

ref bắt buộc phải khởi tạo giá trị cho biến trước khi vào hàm

out bắt buộc phải gán giá trị cho biến trước khi thoát khỏi hàm.

Vậy khi nào dùng ref và khi nào dùng out?

5/5 - (1 Bình chọn)
75 lượt xem

07/03/2022 Ứng Dụng Miễn Phí

Bài viết liên quan

Block "5_tab_footer" not found