متدها (Methods) در سی شارپ
یک متد مجموعه از دستورات است که با هم یک کار را انجام می دهند. همه برنامه های C# یک کلاس با متد Main() را دارد.
به منظور استفاده از یک متد باید:
- آن را تعریف کنید
- آن را فراخوانی کنید
تعریف یک متد در C#
زمانی که یک متد را تعریف می کنید، اساس عناصر مربوط به ساختار آن را مشخص می کنید. سینتکس کلی تعریف متد در سی شارپ به صورت زیر است:
1 2 3 | <Access Specifier> <Return Type> <Method Name>(Parameter List) { Method Body } |
در زیر بخش های مختلف ساختار یک متد در زبان سی شارپ بررسی شده است:
- Access Specifier : مشخصه دسترسی متد را مشخص می کند.
- Return Type : نوع داده ای که قرار است از متد بازگشت داده شود را مشخص می کند. اگر هیچ مقدار بازگشتی وجود نداشته باشد، به صورت void نوشته می شود.
- Method Name : نام متد را مشخص می کند که باید منحصر به فرد باشد و به حروف بزرگ و کوچک حساس است.
- Parameter List : لیست پارامترهای یک متد را به منظور انتقال و دریافت داده ها مشخص می کند. یک متد می تواند هیچ پارامتری نداشته باشد.
- Method Body : دستورات لازم برای انجام فرآیندی که متد قرار است انجام دهد را مشخص می کند.
مثال
تکه کد زیر تابع FindMax() را نشان می دهد که دو عدد می گیرد و هر کدام از آن ها که بزرگتر باشد را به عنوان خروجی باز میگرداند. از آنجایی که این متد داری مشخصه public است پس در خارج از کلاس نیز قابل دسترسی می باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class NumberManipulator { public int FindMax(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; } ... } |
فراخوانی متد در C#
برای فراخوانی و اجرای یک متد باید از نامی که برای آن تعریف کرده اید استفاده کنید. مثال زیر نحوه فراخوانی متد را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | using System; namespace CalculatorApplication { class NumberManipulator { public int FindMax(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; } static void Main(string[] args) { /* local variable definition */ int a = 100; int b = 200; int ret; NumberManipulator n = new NumberManipulator(); //calling the FindMax method ret = n.FindMax(a, b); Console.WriteLine("Max value is : {0}", ret ); Console.ReadLine(); } } } |
زمانی که کد بالا توسط کامپایلر زبان سی شارپ اجرا شود، نتیجه زیرا را تولید خواهد کرد:
1 | Max value is : 200 |
با نمونه سازی از یک کلاس می توانید به اعضای عمومی آن دسترسی داشته باشید. برای مثال متد FindMax() که متلق به کلاس NumberManipulator است، در خارج از این کلاس و در کلاس تست فراخوانی می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | using System; namespace CalculatorApplication { class NumberManipulator { public int FindMax(int num1, int num2) { /* local variable declaration */ int result; if(num1 > num2) result = num1; else result = num2; return result; } } class Test { static void Main(string[] args) { /* local variable definition */ int a = 100; int b = 200; int ret; NumberManipulator n = new NumberManipulator(); //calling the FindMax method ret = n.FindMax(a, b); Console.WriteLine("Max value is : {0}", ret ); Console.ReadLine(); } } } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Max value is : 200 |
فراخوانی متد به صورت بازگشتی
متدی که خودش را فراخوانی کند، به عنوان متد بازگشتی شناخته می شود. در مثال زیر با استفاده از متد بازگشتی فاکتوریل عدد داده شده را محاسبه می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | using System; namespace CalculatorApplication { class NumberManipulator { public int factorial(int num) { /* local variable declaration */ int result; if (num == 1) { return 1; } else { result = factorial(num - 1) * num; return result; } } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); //calling the factorial method {0}", n.factorial(6)); Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7)); Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8)); Console.ReadLine(); } } } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 | Factorial of 6 is: 720 Factorial of 7 is: 5040 Factorial of 8 is: 40320 |
ارسال پارامترها به متد
اگر متدی که فراخوانی می شود، دارای پارامتر باشد، باید پارامترهای لازم به آن منتقل شود. در زبان برنامه نویسی سی شارپ سه روش برای ارسال پارامترها وجود دارد که در زیر مشاهده می کنید:
ردیف | توضیحات |
1 | ارسال پارامتر با مقدار در این روش فقط یک کپی از مقدار اصلی به متد ارسال می شود و تغییرات اعمال شده در متد تاثیری بر مقدار اصلی ندارد. |
2 | ارسال پارامتر به صورت ارجاع در این روش یک کپی از مرجع پارامتر به متد ارسال می شود به این معنی که متد دسترسی مستقیم به مقدار آن پارامتر دارد و هر تغییری که درون متد اعمال شود بر روی مقدار اصلی نیز تاثیر می گذارد. |
3 | ارسال پارامتر به عنوان خروجی این روش برای بازگشت دادن بیش از یک مقدار از متد، استفاده می شود. |
هیچ نظری ثبت نشده است