การโอเวอร์โหลดฟังก์ชัน หรือ function overloading คือการตั้งชื่อฟังก์ชันที่เหมือนกัน
ในทางเทคนิค เราจะเรียกฟังก์ชันเดียวกันที่ทำการ overloading ว่าเป็นฟังก์ชันชื่อเดียวกันที่มี signature (ลายเซน) ต่างกัน คือ
- จำนวนพารามิเตอร์จะต้องไม่เท่ากัน
- หรือพารามิเตอร์เท่ากัน ประเภทข้อมูล หรือ Type จะต้องต่างกัน
ตัวอย่างเช่น
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace FuncOverloadingTest { class Program { static void Main(string[] args) { var x = fucOver(4, 5.5); // ถ้าค่าใดค่าหนึ่งเป็นทศนิยม จะไปฟังก์ชั่นที่ [1] ทันที Console.WriteLine("fucOver :" + x); Console.WriteLine("FunctionOver :" +FunctionOverloading(4,5,-5)); Console.ReadLine(); } // ฟังก์ชัน (1) และ (2) พารามิเตอร์ต่างกัน แม้ Type เหมือนกันก็สามารถใช้งานได้ static int FunctionOverloading(int x, int y, int z) // -- (1) { if (x > FunctionOverloading(y,z)) { return x; } else { return FunctionOverloading(y, z); } } static int FunctionOverloading(int x, int y) // -- (2) { if (x > y) { return x; } else { return y; } } // พารามิเตอร์ 2 ตัวเหมือนกัน แต่ Type ต่างกัน ก็สามารถประกาศได้ static double fucOver(double x,double y) // --- [1] { return x + y; } static double fucOver(int x, int y) // --- [2] { return x * y; } } }
ผลการรัน
fucOver :9.5
FunctionOver :5