This article is currently in the process of being translated into Thai (~98% done).
Method overloading
ในหลายๆภาษาการเขียนโปรแกรม จะรองรับการทำงานที่ชื่อว่า default/optional parameter ซึ่งจะช่วยให้โปรแกรมเมอร์ มี parameter ได้หลายๆตัว โดยการให้ค่าตั้งต้น (default) เมื่อเราเพิ่ม function เข้าไปในโค้ด จะทำให้เราเขียนโปรแกรมได้ง่ายขึ้น
เช่น เราจะเพิ่ม function ไปยัง function ที่มีอยู่แล้ว เพราะเราต้องการเพิ่ม parameter เราจะเรียก function ซ้อน โดยเราจะส่งค่า default parameter ผ่านไปยัง function ที่เราเพิ่ม optional parameter
C# นั้น ได้รองรับ default parameter มาตั้งแต่ version 4.0 ตัังแต่นั้นมาโปรแกรมเมอร์ได้ใช้เทคนิกไปในทางที่ต่างกันไป แต่โดยพื้นฐานแล้วเหมือนกัน คือ overload method ซึ่งจะทำให้สร้าง method ที่มีชื่อเหมือนกัน แต่ parameter ต่างกันได้ เมื่อเราใช้ .NET framework จะเห็นได้ว่า เราจะต้องใช้ overload method นี้บ่อยมาก เช่น method Substring() ของ String class
string Substring (int startIndex)
string Substring (int startIndex, int length)
เราสามารถเรียก method ที่มี parameter 1 หรือ 2 ก็ได้ ถ้าเราเรียกใช้ 1 ก็จะแปลว่าเราต้องการ string ที่เหลือ ไม่ต้องเสียเวลาประมวลผล
ในการที่เรามีหลาย method แต่ชื่อเดียวกัน เราจะป้องกันยังไงไม่ให้เขียนโค้ดซ้ำ? เราก็เพียงแต่ละ method ง่ายๆเอาไว้ แล้วให้ method ที่มีความซับซ้อนประมวลผล
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;
}
}
เราสร้าง method Plus มา 2 version ซึ่ง version แรกมี 2 parameter เพื่อบวกตัวเลข 2 ตัว ส่วน version 2 มี 3 parameter เพื่อบวกตัวเลข 3 ตัว ถ้าเราต้องการบวกตัวเลขแค่ 2 ตัว เราก็ยังคงเรียก method ที่มี parameter 3 ตัว แต่เราจะใส่ค่า 0 ให้กับ parameter ที่ 3
ถ้าเราจะเพิ่ม parameter ตัวที่ 4 เราก็แค่เพิ่ม overload method
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;
}
}
ข้อดีของ overload method ก็คือ Plus method จะประมวลผลอย่างต่อเนื่อง โดยที่ไม่มีอะไรเปลี่ยนแปลง