CodeGym /Các khóa học /C# SELF /Giới thiệu về function (method) trong C#

Giới thiệu về function (method) trong C#

C# SELF
Mức độ, Bài học
Có sẵn

1. Function/Method trong C#

Bạn đã học được kha khá lệnh trong C#, nghĩa là bạn có thể code chương trình khá phức tạp rồi. 10, 20, 30 dòng code trong chương trình — cũng chưa phải là chương trình to lắm nhỉ?

Nhưng mà chương trình 100+ dòng — đã là to rồi, đọc code cũng mệt phết. Có cách nào để viết và đọc chương trình dài cho dễ hơn không?

Có chứ, và method (function) sẽ giúp tụi mình.

Vậy method là gì? Nếu nói đơn giản thì method là một nhóm lệnh có tên riêng biệt. Nói cách khác, mình gom vài lệnh lại thành một nhóm rồi đặt cho nó cái tên. Thế là xong, có method rồi.

Giả sử bạn có đoạn code vẽ con mèo:

Console.WriteLine("  |\\__/,|   (`\\");
Console.WriteLine("  |o_o  |__ _) )");
Console.WriteLine("  (____/   (_/ ");
Code để vẽ con mèo

Đây là kết quả nó in ra:

  |\__/,|   (`\
  |o_o  |__ _) )
  (____/   (_/

Bạn có thể cho nó vào một method riêng rồi vẽ bao nhiêu con mèo cũng được:

void WriteCat()
{
    Console.WriteLine("  |\\__/,|   (`\\");
    Console.WriteLine("  |o_o  |__ _) )");
    Console.WriteLine("  (____/   (_/ ");    
}

//vẽ ba con mèo
WriteCat();
WriteCat();
WriteCat();
Dùng method để in lại con mèo nhiều lần

Khi chương trình chạy, mỗi lần gọi WriteCat() nó sẽ thực hiện tất cả lệnh bên trong method WriteCat(). Tụi mình chỉ cần tạo một lệnh mới (method), gom vài lệnh lại thành nhóm thôi.

Ý nghĩa của function:

  • Chia chương trình thành các phần, mỗi phần lo một việc riêng.
  • Dễ tái sử dụng: viết một lần, xài bao nhiêu lần cũng được.
  • Giảm lỗi: bug trong function thì sửa một chỗ là xong.
  • Đặt tên cho các thao tác phức tạp — code dễ đọc hơn hẳn.

Thuật ngữ: function, method, procedure

Trong C#, từ function và method thường là một, nhưng cũng có chút khác biệt nhỏ.

  • Method — function thuộc về class hoặc object (trong C# hầu như mọi thứ đều là method).
  • Procedure — function không trả về giá trị (void-method).
  • Function — nói chung là bất kỳ phần nào có tên trong chương trình mà gọi được.

Chính thức thì trong C# tất cả gọi là method, nhưng nếu sau này bạn gặp từ "function" thì cũng đừng hoảng nhé!

2. Cú pháp khai báo method: phân tích từng phần

Cùng xem một function đơn giản, kiểu "Hello, World!" kinh điển, nhưng mình sẽ tách phần in ra thành method riêng:

using System;

class Program
{
    static void Main()
    {
        PrintHello();
    }

    static void PrintHello()	// in ra dòng Hello, World!
    {
        Console.WriteLine("Hello, World!");
    }
}
Ví dụ khai báo và gọi method

Phân tích cú pháp:

Phần Ví dụ Mô tả
Modifier
static
Chỉ ra method thuộc về class (chi tiết — nói sau)
Kiểu trả về
void
Chỉ ra method không trả về gì cả
Tên method
PrintHello
Tên method để gọi nó
Tham số
()
Tham số (trống — không có tham số)
Thân method
{ ... }
Code thực thi khi gọi method

Ví dụ dễ hiểu:
Method giống như máy pha cà phê: bạn bỏ tiền vào (tham số), bấm nút (gọi method), máy pha cà phê (thân method), và trả kết quả (giá trị trả về) — hoặc không trả gì nếu là void-method!

3. Cách gọi method

Gọi method chỉ cần tên và ngoặc tròn là xong:

PrintHello(); // Method không có tham số

int sum = Add(2, 3); // Method có tham số và trả về kết quả

Lưu ý: chỉ gọi được method sau khi đã khai báo nó (hoặc nếu nó nằm "ở trên" trong code, hoặc cùng class).

4. Method với tham số

Bạn có thể truyền tham số vào method. Nhờ vậy method linh hoạt và tuỳ biến cho mọi trường hợp. Thực ra tham số là biến của method, được gán giá trị khi gọi method. Tham số phải khai báo khi tạo method.

static void Greet(string name)
{
    Console.WriteLine($"Xin chào, {name}!");
}

// Sử dụng:
Greet("Alice");
Greet("Bob");
Method có tham số

Tham số — là biến mà bạn truyền giá trị cho method khi gọi.

Phần Ví dụ Mô tả
Kiểu tham số
string
Kiểu giá trị nhận vào
Tên tham số
name
Tên để dùng trong method

Gọi:
Greet("Alice"); — name nhận giá trị "Alice".

Nhiều tham số

Bạn có thể khai báo nhiều tham số, cách nhau bằng dấu phẩy:

static void PrintSum(int a, int b)
{
    Console.WriteLine($"Tổng: {a + b}");
}

// Sử dụng:
PrintSum(5, 7); // Tổng: 12
Method với nhiều tham số

5. Tham số-giá trị và tham số-tham chiếu

Tham số của function là biến bình thường, nên áp dụng quy tắc giống như biến khác.

Nhớ nhé: khi truyền mảng vào method, bạn truyền tham chiếu tới mảng, nghĩa là method có thể thay đổi nội dung mảng. Với kiểu đơn giản (int, double), giá trị được copy.

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Thay đổi mảng gốc!
}

// Sử dụng:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]);	//in ra 0
Truyền mảng theo tham chiếu — method thay đổi dữ liệu gốc

Thực ra nó hoạt động như sau:

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Thay đổi mảng gốc!
}

// Sử dụng:
int[] a = {1, 2, 3, 4, 5};

//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;

Console.WriteLine(a[0]);	//in ra 0
Ví dụ truyền mảng theo tham chiếu
2
Nhiệm vụ
C# SELF, mức độ, bài học
Đã khóa
Tạo phương thức không có tham số
Tạo phương thức không có tham số
2
Nhiệm vụ
C# SELF, mức độ, bài học
Đã khóa
Tạo phương thức với tham số
Tạo phương thức với tham số
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION