This article is currently in the process of being translated into Vietnamese (~75% done).
Methods (functions)
Trong khi thuộc tính và trường là bị động trong class thì phương thức là chủ động. Chúng sẽ thực hiện một trong vài thao tác và trả về kết quả. Trong các ngôn ngữ chúng thường là hàm hay thậm chí "funcs", nhưng trong C#, chúng thuộc về class nên được gọi là phương thức. Phương thức rất hữu ích bởi chúng cho phép bạn đóng gói một phần chức năng và có thể gọi từ nhiều vị trí khác nhau.
A method is defined like this:
<visibility> <return type> <name>(<parameters>)
{
<method code>
}
Đây là ví dụ rất cơ bản:
public int AddNumbers(int number1, int number2)
{
return number1 + number2;
}
Phương thức cơ bản này sẽ cộng hai số và trả về kết quả. Hãy xem qua các thành phần của nó:
- public có thể truy nhập mọi nơi (sẽ cụ thể hơn trong bài giảng)
- int là kiểu dữ liệu trả về. Nếu bạn không muốn phương thức của bạn trả về cái gì thì dùng từ khóa void
- AddNumbers là tên của phương thức
- (int number1, int number2) - these are the parameters (more on those later). Parameters are optional, so you are free to leave the space between the parentheses empty. The parentheses are not optional though.
- Inside the method (between the curly braces), you will find the actual code of the method. It can be one or many lines of code.
To call a method, simply write it's name followed by a set of parentheses. Inside the parentheses, you should write the parameters (if the method accepts any), like this:
AddNumbers(3, 39);
Vì phương thức được định nghĩa trong class nên bạn có thể muốn gọi một phương thức trong class khác hơn là class chứa phương thức. Nếu vậy, bạn bên gọi phương thức thông qua đối tượng, hay trong trường hợp phương thức tĩnh (chúng ta sẽ nói sau này), là tên của class. Đây là một ví dụ mà chúng ta gọi phương thức AddNumbers(), từ class khác MathHelper:
public void DoMath()
{
MathHelper mathHelper = new MathHelper();
int result = mathHelper.AddNumbers(4, 38);
Console.WriteLine(result);
}
Method return types
Hãy nói thêm về kiểu dữ liệu trả về. Trong ví dụ trên, chúng ta đã định nghĩa phương thức có kiểu trả về là số nguyên, nhưng bạn có thể trả về bất kỳ kiểu dữ liệu nào trong C#. Thực tế, bạn có thể khai báo một phương thức không trả về bất kỳ cái gì, như chúng ta thấy với phương thức DoMath()trên. Chú ý rừng tôi có int với void, có nghĩa rằng phương thức này không trả về cái gì. Trong một vài ngôn ngữ lập trình, phương thức không có dữ liệu trả về gọi là thủ tục, nhưng trong C# chúng luôn gọi là phương thức.
Bạn nên để ý rằng khi bạn khai báo dữ liệu trả về cho một phương thức, bạn PHẢI trả về cái gì đó - nếu không, trình biên dịch sẽ ngay lập tức thông báo:
public int AddNumbers(int number1, int number2)
{
Console.WriteLine(number1 + number2);
}
Compiler error: AddNumbers(int, int)': not all code paths return a value
Điều đó có nghĩa bạn cần một (hay nhiều) từ khóa return bên trong phương thức của bạn nếu phương thức có giá trị trả về. Bạn có thể cần nhiều hơn một cho những tình huống bạn có nhiều giá trị có thể, như sau:
public int AddLargeNumbers(int number1, int number2)
{
if((number1 > 1000) && (number2 > 1000))
{
return number1 + number2;
}
return 0;
}
Trong trường hợp này, chúng ta cần trả câu trả về thứ hai - nếu bỏ qua thì trình biên dịch sẽ thông báo vì câu lệnh điều kiện có thể không thực hiện câu return đầu tiên.
Summary
Methods allow you to encapsulate and reuse functionality from several places. By supplying different parameters to a method, you can get different results. We have used some parameters in the examples above, but in the next article, we'll dig much deeper into the subject of method parameters.