در این مقاله تصمیم داریم که شمارا با متدها در سی شارپ آشنا کنیم مواردی که در این مقاله آموزش داده میشود.
2.فراخانی متد ها
3.تعریف متد با استفاده از Experssion bodied
4.استفاده از over loading
5.پارامتر های نامدار
برای یادگیری زبان برنامه نویسی سی شارپ شما می توانید از دوره آموزش سی شارپ رایگان سایت باگتو شروع کنید و در دوره ستارگان سی شارپ سایت به سطح بالایی از این دانش خواهید رسید.
متد چیست؟
ساختار متد به این صورت است
Access Modifier Return Type MethodName (Parameters)
{
Method Body
}
Access Modifier:سطح دسرسی متد است
Return Type: نوع خروجی متد است
MethodName:نام دلخواه برای متد میتوانیم انتخاب کنیم
Parameters: پارامتر های ورودی متد است
Method Body: بدنه متد است
مثال
public int Sum(int a, int b=2)
{
int c = a + b;
return c;
}
در مثال بالا ما یک متد داریم که سطح دسترسی آن public و نوع خروجی آن int و نام آن sum است و پارامترهای ورودی آنها به ترتیب a b هستند و در بدنه میبینیم که مقادیر ورودی باهم جمع میشوند و خروجی متد جمع اعداد ورودی است به این صورت است که درون بدنه یک متغیر با نام c تعریف کردهایم و جمع اعداد a b را که یکی از آنها را خودمان وارد کردیم و دیگری را کاربر وارد میکند را درون متغیر c میریزد و این متغیر را در خروجی چاپ میکند با استفاده از کلمه کلیدی return میتوانیم خروجی را چاپ کنیم
پس اگر بخواهیم یک تعریف واحد و خوب برای متد داشته باشیم میتوانیم بگوییم که در برنامهنویسی لازم است که یک کار را چند بار انجام دهیم و بهجای این که بخواهیم کدها را چندین بار تایپ کنیم میتوانیم آنها را در قالب متد یکبار پیادهسازی کنیم و n بار آن متد را صدا بزنیم و از آن استفاده کنیم دقیقاً مانند زندگی واقعی انسانها که یکبار کاری را یاد میگیرند و بارها آن را انجام میدهند. درست مثل رانندگی و شما یکبار رانندگی یاد گرفتهاید و هر روز این کار را تکرار میکنید و دیگر از اول یاد نمیگیرید. متدها باعث خوانایی بیشتر برنامه شما میشوند از یک متد میتوانید چندین بار از آن استفاده کنید که باعث کاهش شدید کدنویسی شما خواهد شد.
فراخوانی متدها
حالا برای استفاده از متد کافی است که در هرجای برنامه که خواستیم (باتوجهبه سطح دسترسی متد) نام متد را صدا بزنیم و ورودیهای آن را وارد کنیم برای مثال اگر بخواهیم متد مثال بالا را صدا بزنیم به این صورت عمل میکنیم
Console.WriteLine(Sum(5,50));
حال در خروجی مقدار 55 چاپ میشود البته توجه داشته باشید که اگر ورودی متد مقدار اولیه داشته باشد زمان استفاده اگر ورودی وارد نکنیم مقدار اولیه آن برای ما استفاده میشود برای مثال در متد بالا اگر زمان استفاده عدد 50 را به متد نمیدادیم از مقدار اولیه آن یعنی 2 استفاده میشد و در خروجی 7 چاپ میشد پس نتیجه میگیریم که اگر زمان نوشتن متد به متد ورودی پیشفرض بدهیم در زمان استفاده اگر ورودی ندهیم از همان استفاده میشود ولی اگر ورودی پیشفرض ندهیم برنامه با خطا مواجه میشود
حال اگر ورودی پیشفرض بدهیم و هم چنین در زمان استفاده نیز ورودی بدهیم از ورودی که در زمان استفاده وارد کردیم استفاده میشود
- اگر خروجی تابع را از نوع void قرار دهیم آن تابع خروجی ندارد و فقط درون خودش عملیاتی را برای ما انجام میدهد
- توابع میتوانند پارامتر ورود نداشته باشند و درون خودشان بدون گرفتن مقدار ورودی کاری را انجام دهند و خروجی کار را برای ما نمایش دهند
تعریف متد با استفاده از Experssion bodied
با استفاده از عبارات لامبدا میتوان تعریف متد را از بدنه آن جدا کنیم و به این شکل توانستهایم از expression bodied استفاده کنیم
به مثال زیر توجه کنید
public double Div(double a, double b) => a / b;
در مثال بالا یک متد داریم که دوتا پارامتر که مقدار پیشفرض ندارند را از ورودی میگیرد و حاصل تقسیم ان دو عدد را در خروجی نمایش میدهد
مثال بالا و مثال زیر دقیقاً یک متد هستند و یک کار را انجام میدهند هر دو کار تقسیم را انجام میدهند
public double Div(double a, double b)
{
return a / b;
}
همانطور که میبینید اگر بدنه متد ما یک خط بود میتوانیم از expression bodied استفاده کنیم که بسیار راحتتر است و کد را زیباتر نشان میدهد
استفاده از over loading
میتوانیم یک متد را با ورودیهای مختلف داشته باشیم یعنی یک متد است ولی کارهای مختلفی انجام میدهد به این موضوع overloading میگوییم برای مثال ===>
public double Div(double a, double b)
{
return a * b;
}
public double Div(string a, string b)
{
return double.Parse(a) / double.Parse(b);
}
همانطور که میبینیم دو تابع مقابل همنام هستند ولی هرکدام کار متفاوتی انجام میدهند
به این صورت کار میکند که زمانی که تابع Div را فراخوانی میکنیم اگر به ورودی آن مقدار رشتهای بدهیم آنها را تقسیم میکند ولی اگر در زمان ورودی به آن مقدار اعشاری بدهیم آن دو عدد را باهم ضرب میکند و میتوانیم بینهایت متد همنام داشته باشیم و به این صورت میتوانیم کدهای خواناتری بنویسیم
پارامترهای نامدار
در برخی مواقع زمانی که در زمان استفاده از متد تعداد پارامترها بالا میرود ممکن است که فراموش کنیم که کدام مقدار را داریم برای کدام پارامتر ارسال میکنیم و ترتیب آنها را فراموش میکنیم (بهصورت پیشفرض به ترتیب ورودی مقادیر پارامترها پر میشوند) در این مواقع میتوانیم از پارامترهای نامدار استفاده کنیم که بهصورت زیر است
public int Sum(int a, int b)
{
int c = a + b;
return c;
}
Console.WriteLine(Sum(a:5, b:50));
اگر به صورت بالا از متدها استفاده کنیم یعنی قبل از ورودی نام پارامتر را بنویسیم و سپس دو نقطه و بعد مقدار را بدهیم دیگر ترتیب ورودیها مهم نیست و کامپایلر متوجه میشود که کدام ورودی برای کدام متغیر است به اینها پارامترهای نامدار گفته میشود
خب امیدواریم که با متدها در سی شارپ تا حد خوبی آشنا شده باشید و در پروژههای خود از این استفاده کنید چراکه موضوع خیلی مهمی است
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید