TOC

This article is currently in the process of being translated into Vietnamese (~77% done).

Classes:

Method overloading

Rất nhiều ngôn ngữ lập trình hỗ trợ tham số mặc định/tùy chọn. Nó cho phép lập trình viên có thể tạo ra một hay vài tham số tùy chọn bằng cách gán cho chúng giá trị mặc định. Đặc biệt là khi thêm chức năng vào code có sẵn.

Ví dụ, bạn có thể muốn thêm chức năng vào một hàm có sẵn, cần một hay vài tham số để đưa vào. Bằng cách đó, bạn có thể làm hỏng chương trình khi gọi hàm này. Để làm việc với nó bạn có thể định nghĩa tham số thêm vào là tùy biến, và gán cho chúng giá trị mặc định tương ứng với cách mà code hoạt động trước khi thêm tham số

Tham số mặc định được giới thiệu trong C# phiên bản 4.0 nhưng trước đó, các lập trình viên C# dùng công nghệ khác, là dùng phương thức xếp chồng. Nó cho phép lập trình viên định nghĩa nhiều phương thức khác nhau có cùng tên khác nhau ở tập tham số. Khi bạn dùng class trong .NET framework, bạn sẽ sớm nhận ra rằng nạp chồng hàm được dùng nhiều. Một ví dụ hay về nó là phương thức Substring() của lớp String. Nó có hàm nạp chồng như sau:

string Substring (int startIndex)
string Substring (int startIndex, int length)

Bạn có thể gọi nó với cả một hay hai tham số. Nếu bạn chỉ gọi với một tham số thì tham số length được cho là chiều dài chuỗi con, tiết kiệm thời gian bất cứ khi nào chúng ta muốn lấy phần còn lại của chuỗi

So, by defining several versions of the same function, how do we avoid having the same code several places? It's actually quite simple: We let the simple versions of the method make the complex version of it do all the work. Consider the following example:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return number1 + number2 + number3;
    }
}

Chúng ta định nghĩa phương thức Plus với hai phiên bản. Phiên bản đầu tiên có hai tham số để cộng hai số trong khi phiên bản thứ hai có ba tham số. Công việc thực sự được hoàn thành ở phiên bản ba tham số - nếu chúng ta chỉ muốn cộng hai tham số thì chúng ta chỉ cần gọi phương thức ba tham số và dùng 0 như là tham số thứ ba, giống giá trị mặc định. Tôi biết, tôi biết, đó là một ví dụ có vẻ ngốc nghếch như được chỉ định bởi tên của lớp nhưng nó sẽ cho bạn ý tưởng về cách hoạt động của xếp chồng.

Now, whenever you feel like doing advanced math by adding a total of four numbers (just kidding here), it's very simple to add a new overload:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return Plus(number1, number2, number3, 0);
    }

    public static int Plus(int number1, int number2, int number3, int number4)
    {
        return number1 + number2 + number3 + number4;
    }
}

The cool thing about this, is that all your existing calls to the Plus method will continue working, as if nothing had been changed. The more you use C#, the more you will learn to appreciate method overloading.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!