کلمه کلیدی params
کلمه کلیدی params امكان ارسال تعداد دلخواه پارامترهاي همنوع و ذخیره آنها در یک آرایه ساده را فراهم میآورد. کد زیر طریقه استفاده از کلمه کلیدی params را نشان میدهد :
1: using System; 2: 3: public class Program 4: { 5: static int CalculateSum(params int[] numbers) 6: { 7: int total = 0; 8: 9: foreach (int number in numbers) 10: { 11: total += number; 12: } 13: 14: return total; 15: } 16: 17: public static void Main() 18: { 19: Console.WriteLine("1 + 2 + 3 = {0}", CalculateSum(1, 2, 3)); 20: 21: Console.WriteLine("1 + 2 + 3 + 4 = {0}", CalculateSum(1, 2, 3, 4)); 22: 23: Console.WriteLine("1 + 2 + 3 + 4 + 5 = {0}", CalculateSum(1, 2, 3, 4, 5)); 24: 25: } 26: }
1 + 2 + 3 = 6 1 + 2 + 3 + 4 = 10 1 + 2 + 3 + 4 + 5 = 15
از کلمه کلیدی params قبل از نوع دادهای آرایه پارامتر استفاده میشود (مثال بالا). حال متد را سه بار با تعداد مختلف آرگومانها فراخوانی میکنیم. این آرگومانها در داخل یک پارامتر از نوع آرایه ذخیره میشوند. با استفاده از حلقه foreach این آرگومانها را جمع و به متد فراخوان برگشت داده میشود. وقتی از چندین پارامتر در یک متد استفاده میکنید فقط یکی از آنها باید دارای کلمه کلیدی params بوده و همچنین از لحاظ مکانی باید آخرین پارامتر باشد. اگر این پارامتر (پارامتری که دارای کلمه کلیدی params است) در آخر پارامترهای دیگر قرار نگیرد و یا از چندین پارامتر params دار استفاده کنید با خطا مواجه میشوید. به مثالهای اشتباه و درست زیر توجه کنید :
void SomeFunction(params int[] x, params int[] y) //ERROR void SomeFunction(params int[] x, int y, int z) //ERROR void SomeFunction(int x, int y, params int[] z) //Correct
امکان ارسال تعداد دلخواه ارگومان هم نوع نه پارامتر
سایتتون عالیه
سلام و وقت بخیر عرض میکنم.
بابت توضیحاتتون سپاسگزارم. ولی اگه در مورد تابع Params اینکه چه ضعفهایی داره و چه نقاط قوتی داره و یا حتی در مورد مشکلاته Overloading بیشتر توضیح میدادید
خیلی خوب میشد.
با احترام باقوت
با سلام خدمت شما استاد گرامی
استاد ما یک برنامه ای گفت که بنویسیم که نمره و تعداد واحد n درس دانشجو رو از ورودی بگیره توسط ارایه(تو متد مین)و در کلاس بعنوان مثال sample و در متد student که داخل کلاس sample هست معدل این دانشجو رو حساب و چاپ کنه.راهنمایی کنید که خیلی گیرم:(
سلام دوست عزیز… ممنون میشم سوالتونو توی انجمن مطرح بفرمایید