آموزش توابع در سی شارپ
یک تابع که به شما اجازه می دهد که یک قسمت از کد را به صورت یک بسته درآورده و آن را از بخش های دیگر کد خودتان فراخوانی کنید. شما ممکن است در شرایطی قرار بگیرید که بخواهید یک بخش از کد را از چندین موقعیت تکرار کنید؛ و در این بخش ها است که توابع وارد می شوند. در سی شارپ، آنها را اساساً به صورت زیر بیان می کنند.
<visibility> <return type> <name>(<parameters>)
{
<function code>
}
برای فراخوانی یک تابع؛ شما به سادگی نام آن را نوشته، یک پرانتز باز گذاشته و سپس اگر پارامتری وجود داشته باشد؛ آنها را نوشته و سپس پارانتز را ببندید؛ که به صورت زیر نوشته می شود:
DoStuff();
در این قسمت مثالی از تابع ()DoStuff را مشاهده می کنید:
public void DoStuff()
{
Console.WriteLine(“I’m doing something…”);
}
بخش اول، یعنی public، آشکار می باشد و اختیاری است. اگر چیزی را تعریف نکنید؛ سپس تابع خصوصی خواهد بود. در مورد این موضوع در فصل های بعدی بیشتر بحث می کنیم. سپس نوع داده ای که در نتیجه حاصل می شود، باید مطرح شود. این نوع داده می تواند هر نوع داده ی مجاز در سی شارپ باشد؛ و همان طور که می بینید ما در این قسمت از void استفاده کرده ایم. یک void به این معنا است که این تابع قطعاً هیچ نتیجه ای را به دست نخواهد داد. همچنین، این تابع پارامتری را نیز اتخاذ نمی کند؛ زیرا مشاهده می کنید که پرانتزهای مقابل تابع خالی هستند، در واقع کدی که نوشته شده است تا حدودی خسته کننده می باشد. پس بیایید آن را تغییر دهیم.
برنامه نویسی سی شارپ رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی با ساخت اپلیکیشن، توسعه وب ... دانلود:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
همان طور که مشاهده می کنید؛ ما تقریباً همه چیز را تغییر داده ایم. این تابع اکنون یک عدد صحیح را برمی گرداند، دو پارامتر (هر دو عدد صحیح) را می گیرد و به جای ایجاد چیزی در خروجی، یک محاسبه را انجام می دهد و سپس نتیجه را برمی گرداند. این بدان معنی است که به جای این که بخواهیم هر بار کد محاسبه را بنویسیم، می توانیم به راحتی با فراخوانی این تابع، دو عدد را از مکانهای مختلف در کد خود اضافه کنیم. در حالی که این مثال کوچک، وقت و تلاش زیادی را برای ما، ذخیره سازی نمی کند؛ بهتر است باور داشته باشید که هر چقدر بیشتر توابع را بیاموزید می توانید بیشتر از سی شارپ استفاده کنید. این تابع به صورت زیر بیان می شود:
int result = AddNumbers(10, 5);
Console.WriteLine(result);
همانطور که گفته شد ، این تابع در واقع چیزی را بر می گرداند و باید این کار را انجام دهد زیرا ما به C شارپ گفتیم که قرار است این کار را انجام دهد. زمانی که هر چیزی به جز void به عنوان داده بازگشتی بیان شود؛ ما برنامه خود را در واقع ملزم می کنیم تا حتماً چیزی را بازگرداند. شما می توانید خطی که نتیجه را باز می گرداند از مثال بالا حذف کنید و حاصل کامپایلر را مشاهده کنید:
‘AddNumbers(int, int)’: not all code paths return a value
کامپایلر به ما یادآوری می کند که ما تابعی داریم که چیزی را بر نمی گرداند. البته جای حذف کردن آن خط، می توانید چیزی شبیه به این کدها را امتحان کنید:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
}
شما همان خطا را مشاهده خواهید کرد؛ اما چرا؟ زیرا هیچ ضمانتی وجود ندارد که عبارت if ما درست ارزیابی کند و خطی که باید نتیجه را ایجاد نماید؛ شروع به اجرا کند. شما می توانید با لحاظ کردن یک عبارت دوم بازگردانی نتیجه در انتها، این مشکل را برطرف کنید.
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
return 0;
}
به این ترتیب مشکلی که برای خودمان ایجاد کرده ایم؛ برطرف می شود؛ و به این ترتیب به شما نشان دادیم که می توانید بیشتر از یک عبارت برای حاصل کردن نتیجه داشته باشید. به محض این که به یک عبارت بازگرداندن نتیجه برسیم؛ عملکرد باقی مانده و دیگر کدی که در آن وجود دارد؛ اجرا نمی شود. در این مورد؛ تا زمانی که نتیجه بزرگتر از ۱۰ باشد؛ نتیجه ی “۰” هرگز به دست نمی آید.