0

فراخوانی با پارامتر

 
amirpetrucci0261
amirpetrucci0261
کاربر طلایی1
تاریخ عضویت : تیر 1388 
تعداد پست ها : 27726
محل سکونت : http://zoomstar.ir/

فراخوانی با پارامتر

گاهی اوقات تعداد پارامترهای ارسالی به یک متد دقیقا مشخص نیست. مثلا میخواهیم متد مورد نظر تعدادی عدد را بگیرد که تعداد آن اعداد دقیقا مشخص نیست.سپس معدل و حاصل جمع آنها را برگرداند.در این حالت اعداد مورد نظر (پارامترها) به صورت بک آرایه تک بعدی به متد مورد نظر ارسال میشوند و در متد مورد نظر این داده ها پردازش میشوند.

static void CallByParams(out int sum, out double Average,
params int[] array)
{
int sum = 0;
foreach (int i in array)
sum += i;
Average = sum / array.Length;
}
static void Main(string[] args)
{
int sum;
double avg;
CallByParams (sum, avg, 1, 2, 3, 4);
CallByParams (sum, avg, 1, 2, 3, 4, 5, 6, 7);
CallByParams (sum, avg, 1, 2, 3);
}

مثال 5-9-1

این نکته قابل ذکر است که هر متد تنها یک بار میتواند از این نوع پارامترها استفاده کند، پس عبارت زیر غلط است :

Method(params int[] ar, params int[] b)

نکته دیگر این که این پارامتر نمی تواند همراه پیشوندهای ref یا out به کار رود.


و در نهایت این که چنانچه متدی چند پارامتر دیگر هم داشته باشد(مانند مثال قبلی) ، پارامتری که از نوع params است بایستی آخرین پارامتر باشد.

سربارگذاری متدها (Methods overloading)

با استفاده از سربارگذاری متدها میتوانیم ، یک متد را ، بر حسب نیاز با پارامترهای مختلفی فراخوانی کنیم مثلا فرض کنید که میخواهیم تابعی به نام add داشته باشیم که حاصل جمع دو عدد را برگرداند. پارامترهای ورودی این متد میتواند int یا double باشد. این متد همچنان باید بتواند دو رشته دریافت کرده و آن ها را همدیگر الحاق کرده و برگرداند.


برای پیاده سازی متد مذکور کافی است متد مورد نظر را سربارگذاری کنیم. به مثال زیر دقت نمایید :

class Program
{
static int Add(int a , int b)
{
return a + b;
}
static double Add(double a, double b)
{
return a + b;
}
static string Add(string a, string b)
{
return a + b;
}
static void Main(string[] args)
{
int intReturn = Add(10, 15);
double doubleReturn = Add(10.5, 22.585);
double mixedReturn = Add(10, 22.585);
string stringReturn = Add("C# is the best ","Programming
Language");
Console.WriteLine(intReturn);
Console.WriteLine(doubleReturn);
Console.WriteLine(mixedReturn);
Console.WriteLine(stringReturn);
}
}

چهارشنبه 10 آذر 1389  10:58 PM
تشکرات از این پست
دسترسی سریع به انجمن ها