مشخصات مقاله
-
5994
-
5.0
-
17310
-
2
-
1
آموزش کار با Method overloading در C#
وقتی توی C# با متدهایی کار میکنی که ممکنه در شرایط مختلف تعداد متفاوتی پارامتر دریافت کنن، یکی از راههایی که میتونی برای مدیریت این وضعیت استفاده کنی، Method Overloading هست. با این تکنیک میتونی چند نسخه از یک متد رو با پارامترهای مختلف تعریف کنی و موقع فراخوانی، نسخه مناسب رو در اختیار داشته باشی.
توی ادامه این آموزش، میخوایم با مفهوم Method Overloading در C# و نحوه استفاده از اون با چند مثال ساده آشنا بشیم. این موضوع یکی از مفاهیم کاربردی در مسیر یادگیری C# هست و وقتی درست درکش کنی، ساختار متدها و نحوه استفاده از اونها برات خیلی واضحتر میشه.
آموزش کار با روش Method overloading در C# :
خیلی از زبانهای برنامهنویسی از تکنیکی به نام پارامترهای پیشفرض یا اختیاری (default/optional parameters) پشتیبانی میکنن. با استفاده از این تکنیک میتونی برای یک یا چند پارامتر تابع، مقدار پیشفرض تعیین کنی تا موقع فراخوانی، ارسال مقدار برای اون پارامترها اختیاری باشه. این کار باعث میشه کدت انعطافپذیرتر بشه و در شرایط مختلف راحتتر از تابع استفاده کنی.
برای مثال، فرض کن تابعی داری که یک یا چند پارامتر ورودی دریافت میکنه و میخوای استفاده از اون رو انعطافپذیرتر کنی. اگه موقع فراخوانی تعداد پارامترهای موردنیاز رو ارسال نکنی، ممکنه کد درست اجرا نشه. اینجاست که پارامترهای اختیاری یا optional میتونن بهت کمک کنن. برای بعضی پارامترها یک مقدار پیشفرض یا default در نظر میگیریم تا اگه موقع فراخوانی مقداری برای اونها ارسال نشد، برنامه همچنان بتونه کار خودش رو انجام بده.
پارامترهای پیشفرض (default parameters) در زبان C# 4.0 معرفی شدن، اما قبل از اون هم برنامهنویسها برای رسیدن به نتیجهای مشابه از تکنیکی به نام method overloading استفاده میکردن. در این روش، چند متد با یک نام تعریف میکنیم، ولی تعداد یا نوع پارامترهای اونها با هم فرق داره. مثلاً یک متد میتونه یک پارامتر بگیره و متد دیگه دو پارامتر. یکی از مثالهای مناسب برای این روش، متد Substring از کلاس String هست. به شکل زیر:
string Substring (int startIndex)
string Substring (int startIndex, int length)
حالا میتونی متد بالا رو با یک یا دو پارامتر فراخوانی کنی. اگه متد رو با یک پارامتر صدا بزنی، حالت اول اجرا میشه و اگه دو پارامتر بهش بدی، حالت دوم مورد استفاده قرار میگیره.
پس با تعریف چند شکل مختلف از یک متد، میتونی مقدار زیادی از کدنویسی تکراری رو کم کنی. برای این کار، معمولاً کاری میکنیم که متد سادهتر، متد کاملتر رو صدا بزنه و اجرای کار رو به اون بسپاره. به مثال زیر دقت کن:
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;
}
}
در مثال بالا، متد Plus رو در دو حالت مختلف تعریف کردیم. در حالت اول، متد دو پارامتر برای جمع کردن 2 عدد دریافت میکنه، در حالی که حالت دوم سه پارامتر داره. در واقع عملیات اصلی توسط نسخه 3 پارامتری انجام میشه. وقتی بخوایم فقط دو عدد رو با هم جمع کنیم، نسخه دو پارامتری متد رو صدا میزنیم و اون هم نسخه 3 پارامتری رو فراخوانی میکنه و عدد 0 رو به پارامتر سوم میده تا بهعنوان مقدار پیشفرض استفاده بشه. این دقیقاً همون ایدهایه که در بخش قبل دربارهش صحبت کردیم.
حالا اگه بخوای 4 عدد رو با هم جمع کنی، میتونی یک نسخه 4 پارامتری دیگه هم به برنامه اضافه کنی. به کد زیر توجه کن:
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;
}
}
مثال بالا خیلی ساده نشون میده که تکنیک method overloading در C# چطور کار میکنه و چطور میتونیم چند نسخه از یک متد داشته باشیم و بین اونها ارتباط برقرار کنیم.
اگه میخوای این مفاهیم رو در کنار سایر مباحث مهم زبان C# بهصورت اصولی و کاربردی یاد بگیری، میتونی مسیر یادگیریت رو با دوره آموزش C# ادامه بدی و مفاهیم مختلف این زبان رو قدمبهقدم تمرین کنی.