متدها (Methods) در سی شارپ
یک متد مجموعه از دستورات است که با هم یک کار را انجام می دهند. همه برنامه های C# یک کلاس با متد Main() را دارد.
به منظور استفاده از یک متد باید:
- آن را تعریف کنید
- آن را فراخوانی کنید
تعریف یک متد در C#
زمانی که یک متد را تعریف می کنید، اساس عناصر مربوط به ساختار آن را مشخص می کنید. سینتکس کلی تعریف متد در سی شارپ به صورت زیر است:
<Access Specifier> <Return Type> <Method Name>(Parameter List) { Method Body }
در زیر بخش های مختلف ساختار یک متد در زبان سی شارپ بررسی شده است:
- Access Specifier : مشخصه دسترسی متد را مشخص می کند.
- Return Type : نوع داده ای که قرار است از متد بازگشت داده شود را مشخص می کند. اگر هیچ مقدار بازگشتی وجود نداشته باشد، به صورت void نوشته می شود.
- Method Name : نام متد را مشخص می کند که باید منحصر به فرد باشد و به حروف بزرگ و کوچک حساس است.
- Parameter List : لیست پارامترهای یک متد را به منظور انتقال و دریافت داده ها مشخص می کند. یک متد می تواند هیچ پارامتری نداشته باشد.
- Method Body : دستورات لازم برای انجام فرآیندی که متد قرار است انجام دهد را مشخص می کند.
مثال
تکه کد زیر تابع FindMax() را نشان می دهد که دو عدد می گیرد و هر کدام از آن ها که بزرگتر باشد را به عنوان خروجی باز میگرداند. از آنجایی که این متد داری مشخصه public است پس در خارج از کلاس نیز قابل دسترسی می باشد.
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#
برای فراخوانی و اجرای یک متد باید از نامی که برای آن تعریف کرده اید استفاده کنید. مثال زیر نحوه فراخوانی متد را نشان می دهد:
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(); } } }
امتحان کنید
زمانی که کد بالا توسط کامپایلر زبان سی شارپ اجرا شود، نتیجه زیرا را تولید خواهد کرد:
Max value is : 200
با نمونه سازی از یک کلاس می توانید به اعضای عمومی آن دسترسی داشته باشید. برای مثال متد FindMax() که متلق به کلاس NumberManipulator است، در خارج از این کلاس و در کلاس تست فراخوانی می شود.
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(); } } }
امتحان کنید
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
Max value is : 200
فراخوانی متد به صورت بازگشتی
متدی که خودش را فراخوانی کند، به عنوان متد بازگشتی شناخته می شود. در مثال زیر با استفاده از متد بازگشتی فاکتوریل عدد داده شده را محاسبه می کنیم:
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(); } } }
امتحان کنید
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
Factorial of 6 is: 720 Factorial of 7 is: 5040 Factorial of 8 is: 40320
ارسال پارامترها به متد
اگر متدی که فراخوانی می شود، دارای پارامتر باشد، باید پارامترهای لازم به آن منتقل شود. در زبان برنامه نویسی سی شارپ سه روش برای ارسال پارامترها وجود دارد که در زیر مشاهده می کنید:
ردیف | توضیحات |
۱ | Value parameters
در این روش فقط یک کپی از مقدار اصلی به متد ارسال می شود و تغییرات اعمال شده در متد تاثیری بر مقدار اصلی ندارد. |
۲ | Reference parameters
در این روش یک کپی از مرجع پارامتر به متد ارسال می شود به این معنی که متد دسترسی مستقیم به مقدار آن پارامتر دارد و هر تغییری که درون متد اعمال شود بر روی مقدار اصلی نیز تاثیر می گذارد. |
۳ | Output parameters
این روش برای بازگشت دادن بیش از یک مقدار از متد، استفاده می شود. |
نوشته متدها (Methods) در سی شارپ – آموزش سی شارپ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.