ایجاد متدی با تعداد پارامتر دلخواه
با سلام خدمت اساتید و دوستان عزیز!
همتون که با این کد آشنایی دارن:
MessageBox.Show("string text","string Caption",MessageBoxButtons,MessageBoxIcon,MessageB oxDefaultButton,MessageBoxOptions...);
متد show می تونه یه پارامتر بگیره یا هر چند تای دیگه!
می خواستم بدونم چطور یه متدی بنویسیم که پارامتر هاش دلخواه(optional) باشه؟؟
با تشکر
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
نقل قول:
نوشته شده توسط
mehdy.programmer
با سلام خدمت اساتید و دوستان عزیز!
همتون که با این کد آشنایی دارن:
MessageBox.Show("string text","string Caption",MessageBoxButtons,MessageBoxIcon,MessageB oxDefaultButton,MessageBoxOptions...);
متد show می تونه یه پارامتر بگیره یا هر چند تای دیگه!
می خواستم بدونم چطور یه متدی بنویسیم که پارامتر هاش دلخواه(optional) باشه؟؟
با تشکر
تو C# شما می تونید چندین متد با نام های یکسان تعریف کنید،به شرط اینکه تعداد آرگومنت متفاوت یا نوع آرگومنتی که میگیرن متفاوت باشد،
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
دستت درد نکنه!
پس تمام متد های که تو C# این طوری هستند در واقع چند متد متفاوت اند!!!
یعنی فقط همین راه وجود داره؟
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
نقل قول:
نوشته شده توسط
mehdy.programmer
دستت درد نکنه!
پس تمام متد های که تو C# این طوری هستند در واقع چند متد متفاوت اند!!!
یعنی فقط همین راه وجود داره؟
تا جایی که بنده میدونم بله،منتهاش نه اینکه در همه این متد ها یک سری کد تکراری قرار بگیره،بلکه خود این متدها از یک متد private که باهاش هم کلاسه استفاده میکنن که کار اصلی رو اون انجام میده.
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
سلام
شما یک کلاس تعریف کنید و متد های خود را با توجه به نیازتون در ان وارد کنید
message("title","content");//2
message("title","contetnt",icon);//3
کامپوننتی که messageBox فارسی را دارد هم بر همین اساس نوشته شده!
یعنی به وسیله کد form ساختن و درون ان label و button قرار دادن و براساس پارامتر متد اون فرم را تغییراتی می دهند.
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
نقل قول:
نوشته شده توسط
mehdy.programmer
با سلام خدمت اساتید و دوستان عزیز!
همتون که با این کد آشنایی دارن:
MessageBox.Show("string text","string Caption",MessageBoxButtons,MessageBoxIcon,MessageB oxDefaultButton,MessageBoxOptions...);
متد show می تونه یه پارامتر بگیره یا هر چند تای دیگه!
می خواستم بدونم چطور یه متدی بنویسیم که پارامتر هاش دلخواه(optional) باشه؟؟
با تشکر
به این حالت اصطلاحا میگن Overload؛ یعنی نوشتن یک متد با لیست پارامترهای مختلف که برنامه نویس به دلخواه یکی از اون حالتهارو انتخاب میکنه.
بعنوان مثال همون متد Show از کلاس MessageBox رو نگاه کنید، پرانتز باز رو که بعد Show بزارید یه راهنما میاد که نوشه "1of 21" یعنی این متد به 21 حالت مختلف نوشته شده که با زدن کلید "جهت پایین" می تونید تمام حالتها رو بررسی و انتخاب کنید.
موفق باشید
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
نقل قول:
نوشته شده توسط
drstrike
به این حالت اصطلاحا میگن Overload؛ یعنی نوشتن یک متد با لیست پارامترهای مختلف که برنامه نویس به دلخواه یکی از اون حالتهارو انتخاب میکنه.
البته نوشتن یک متد نیست که صرفا پارامترهای مختلفی داشته باشه.
نوشتن چند متد با نام یکسان است اما با تعداد و یا نوع پارامترهای متفاوت و یا حتی تفاوت در داشتن یا نداشتن مقدار بازگشتی و یا تفاوت در نوع مقدار بازگشتی از متد.
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
این بحث overload هست . وقتی بحث یک متد با تعداد پارامتر دلخواه پیش میاد همه ذهنشون میره سمت overloading . در صورتی که overloaind نوشتن چند متد با انواع مختلف پارامتر هاست که میتونه تعدادشون هم فرق کنه . برای نوشتن فقط یک متد (و نه چند متد) با تعداد پارامتر دلخواه از کلمه کلیدی params استفاده می کنیم . به این صورت یک آرایه تعریف میشه که کاربر هرچی پارامتر بزنه میاد تو اون آرایه . مثال : متدی که هر تعداد عدد از نوع int را دریافت و مجموع آنها رو بر می گرداند .
public int Sum(params int[] numbers)
{
int s = 0;
for (int i = 0; i < numbers.Length; i++)
{
s += numbers[i];
}
return s;
}
حالا تو برنامه می تونیم اینطوری استفاده کنیم :
int n = Sum(2, 3, 4, 5);
MessageBox.Show(n.ToString());
n = Sum(10, 11);
MessageBox.Show(n.ToString());
n = Sum(12, 13, 14, 15, 16, 17, 18, 19, 20);
MessageBox.Show(n.ToString());
از این روش بیشتر برای ساخت برنامه های سیستمی مثل کامپایلر ها استفاده میشه .
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
دست همتون درد نکنه! خیلی جواب های خوبی بود!
خصوصا این دو جواب که خیلی خوشم اومد ازش :لبخند:
نقل قول:
البته نوشتن یک متد نیست که صرفا پارامترهای مختلفی داشته باشه.
نوشتن چند متد با نام یکسان است اما با تعداد و یا نوع پارامترهای متفاوت و یا حتی تفاوت در داشتن یا نداشتن مقدار بازگشتی و یا تفاوت در نوع مقدار بازگشتی از متد.
و جواب:
نقل قول:
این بحث overload هست . وقتی بحث یک متد با تعداد پارامتر دلخواه پیش میاد همه ذهنشون میره سمت overloading . در صورتی که overloaind نوشتن چند متد با انواع مختلف پارامتر هاست که میتونه تعدادشون هم فرق کنه . برای نوشتن فقط یک متد (و نه چند متد) با تعداد پارامتر دلخواه از کلمه کلیدی params استفاده می کنیم . به این صورت یک آرایه تعریف میشه که کاربر هرچی پارامتر بزنه میاد تو اون آرایه . مثال : متدی که هر تعداد عدد از نوع int را دریافت و مجموع آنها رو بر می گرداند .
1
2
3
4
5
6
7
8
9
public int Sum(params int[] numbers)
{
int s = 0;
for (int i = 0; i < numbers.Length; i++)
{
s += numbers[i];
}
return s;
}
حالا تو برنامه می تونیم اینطوری استفاده کنیم :
1
2
3
4
5
6
int n = Sum(2, 3, 4, 5);
MessageBox.Show(n.ToString());
n = Sum(10, 11);
MessageBox.Show(n.ToString());
n = Sum(12, 13, 14, 15, 16, 17, 18, 19, 20);
MessageBox.Show(n.ToString());
از این روش بیشتر برای ساخت برنامه های سیستمی مثل کامپایلر ها استفاده میشه .
نقل قول: ایجاد متدی با تعداد پارامتر دلخواه
سلام
به مبحث Named and Optional Arguments رجوع کنید.
public void ExampleMethod(int required, string optionalstr = "default string",
int optionalint = 10)