مقادیر پیش فرض در متدها
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
مقادیر پیش فرض در متدها
در پست آموزش متد چیست، با تعریف متد و ساختار نوشتاری آن شامل سطح دسترسی، خروجی و ورودی آشنا شدید.
جالب است بدانید که میتوانیم در هنگام تعریف یک متد، بعد از مشخص کردن ورودیهای آن، برای هر یک از ورودیهای داخل پرانتز متد، یک مقدار اولیه مشخص کنیم تا اگر در هنگام فراخوانی شناسه آن متد در برنامه، به عنوان ورودی مقداری ارسال نشد، سیستم بصورت اتوماتیک از آن مقادیر پیشفرض استفاده کند.
به عنوان مثال، کد زیر ساختار یک متد با دو ورودی از نوع int است:
public int Sum(int a, int b)
{
return a + b;
}
در اینصورت اگر بخواهیم از این متد Sum در برنامه خود استفاده کنیم، در زمان فراخوانی باید حتما دو داده عددی از نوع int را برای آن ارسال کنیم:
class Program
{
public static void Main(string[] args)
{
int number = Sum(2,5);
}
}
در مثال بالا، ما مجبور بودیم که به عنوان ورودی حتما دو عدد از جنس int را به متد Sum به عنوان ورودی ارسال کنیم که در نهایت پاسخ عملیات a + b یعنی ۲ + ۵ به محل فراخوانی متد بازگردانده شده و حاصل جمع ۷ در ظرف number ذخیره خواهد شد.
اما میتوانیم در زمان تعریف متد Sum، برای ورودیهای int a و int b، یک مقدار پیشفرض در نظر بگیریم:
public int Sum(int a=6, int b=7)
{
return a + b;
}
در اینصورت، در زمان فراخوانی متد Sum، طبق نیازمان میتوانیم هیچ داده عددی را به عنوان ورودی مشخص نکنیم!
یا حداقل یک مقدار را به عنوان ورودی برای متد ارسال کنیم، برای درک راحت تر این موضوع، همزمان سه بار متد Sum را فراخوانی کرده و هر بار یک نوع داده به عنوان ورودی برای آن مشخص میکنیم:
class Program
{
public static void Main(string[] args)
{
int number1 = Sum();
int number2 = Sum(4);
int number3 = Sum(8,9);
}
}
همانطور که مشاهه میکنید، پاسخ محاسبه شده در بلاک متد که به محل فراخوانی متد Sum بازگردانده یا همان return میشود، در هر یک از ظرف های number1، number2 و number3 متفاوت است:
number1 = 13 (6+7)
number2 = 11 (4+7)
number3 = 17 (8+9)
نکته: در زمان مشخص کردن مقدار پیش فرض برای متدها، باید حتما از سمت راست مقداردهی را شروع کنید! (یعنی اول مقدار پیش فرض متغیر b را مشخص کرده و سپس مقدار پیش فرض متغیر a را تعیین کنید؛ یادتان باشد که به هیچ عنوان نمیشود متغیر b بدون مقدار اولیه و متغیر a با مقدار پیش فرض باشد)
با توجه به این نکته اساسی، مثالهای زیر اشتباه بوده و اگر آنها را تعریف کنید، سیستم به شما قطعا خطا خواهد داد:
public int Sum(int a=5, int bint b, int c)
{
return a + b + c;
}
public int Sum(int a, int bint b=4, int c)
{
return a + b + c;
}
public int Sum(int a=5, int bint b=4, int c)
{
return a + b + c;
}
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.