سربارگذاری متد (Method Overloading)
سربارگذاری متد یا Method Overloading به شما این امکان را می دهد که چندین متد همنام در یک کلاس تا مادامیکه این متدها دارای پارامترهای مختلف از لحاظ نوع پارامترها، تعداد و ترتیب پارامترها باشند، تعریف کنید. زمانیکه یک متد سربارگذاری شده صدا زده می شود، کامپایر سی شارپ با بررسی نوع، تعداد و ترتیب آرگومان های ارسالی، به طور خودکار متد مناسب را انتخاب می کند. شما می توانید از Method Overloading برای ایجاد متدهای همنام که وظایف مشابهی را انجام می دهند ولی در نوع داده های ورودی با یکدیگر تفاوت دارند استفاده کنید.در مثال زیر به توضیح نحوه تعریف و فراخوانی متدهای سربارگذاری شده می پردازیم.
در این مثال ما از دو متد سربارگذاری شده به نام Square استفاده کرده ایم که یکی مربع یک عدد از نوع int و دومین متد مربع یک عدد از نوع double را محاسبه می کند. اگرچه این دو متد دارای نام یکسان و تعداد پارامترهای برابری هستند، اما از آنجایی که نوع داده های ورودی در این متدها با یکدیگر متفاوت هستند، خطایی اتفاق نمی افتد.
نکته: همانطور که می دانید برای استفاده از یک کلاس ابتدا باید یک نمونه از کلاس تعریف گردد. در این مثال برای اینکه نیاز به ایجاد یک نمونه از کلاس program نباشد ما متدها را با استفاده از کلمه کلیدی static تعریف نمودیم چون اعضای استاتیک بلافاصله بعد از اینکه کلاس به درون حافظه بار گردید، قابل استفاده می شوند.
در زمان فراخوانی متد Square همانطور که در شکل زیر می بینید، چون دو تعریف برای این متد وجود دارد کادری باز می شود و به شما نشان می دهد که دو پیاده سازی مختلف برای این متد وجود دارد و هرکدام ورودی های مختلفی می پذیرند. شما می توانید با کلیک بر روی مثلث های کوچک مشکی رنگ متد مناسب خود را انتخاب و ورودی های آن را مشخص کنید.
حال اگر برنامه را اجرا کنیم خروجی برنامه به شکل زیر خواهد بود:
متدهای سربارگذاری شده با امضاء از یکدیگر متمایز می شوند و امضاء ترکیبی از نام متد، تعداد، نوع و ترتیب پارامترهای ورودی است و در صورتی که این امضاء یکسان باشد کامپایلر خطایی را صادر خواهد کرد. دقت داشته باشید که متد فراخوانی شده از طریق نوع برگشتی برای کامپایلر قابل تشخیص نمی باشد.