PDA

View Full Version : تابعی که چند مقدار برگرداند



afsharjowkar
یک شنبه 24 مرداد 1389, 09:27 صبح
سلام میخواستم بدونم امکان این هست که تایعی نوشت که چند مقدار برگردونه برای مثال

private string,bool getsomthing()

pooyan3000
یک شنبه 24 مرداد 1389, 09:54 صبح
نه. به عنوان خروجی فقط یه مقدار می شه بر گردوند. اگه می خوای باید اینجوری بنویسی



private string getsomthing(ref bool x, ref int y)
{
x=true; // یا false
y=1000; // عدد مورد نظر
return "رشته مورد نظر";
}


توی برنامت هم باید اینجوری صداش بزنی



bool z;
int w;

string s=getsomthing(ref z, ref w);

bool a=z;
int b=w;

ricky22
یک شنبه 24 مرداد 1389, 10:09 صبح
اگر می خوهید از یک تابع خروجیهای متفاوت از نظر نوع داشته باشید باید از آن امضاهای متفاوت داشته باشید.
یعنی برای آن Overload مختلف بسازید.
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=105
http://msdn.microsoft.com/en-us/library/xxfyae0c%28VS.71%29.aspx
کلمه کلیدی جهت جستجو : C# Method Overloading

syntiberium
یک شنبه 24 مرداد 1389, 10:25 صبح
ولی یه راه خیلی سادش که من خودم خیلی ازش استفاده می کنم اینه که چند تا متغیر به صورت global ایجاد کنی و توی تابع بهشون مقدار بدی . و وقتی تابعت رو صدا می زنی بعدش مطمئنی که خروجی های تابع داخل اون چند تا متغیر ریخته شده و می تونی ازشون استفاده کنی . ( حتی متغیر های آرایه ای را هم می تونی ازشون استفاده کنی یعنی به تعداد نامعلوم از یک تابع خروجی بگیری )

Saeed.Masoumi
یک شنبه 24 مرداد 1389, 10:44 صبح
سلام
راه ricky22 (http://barnamenevis.org/forum/member.php?u=44714) از همه بهتره - استفاده از ref , out زیاد توصیه نمیشه.
اگر مشکلی با Casting نداری از آرایه ای از Object ها استفاده کن:


private object[] Method(arguments)
{
int i=10;
string s="Null";
byte b=253;
return new object[]{i,s,b};
}

saeedalg
یک شنبه 24 مرداد 1389, 11:10 صبح
راه درستش اینه که برای اون مقادیری که میخوای خروجی بدی یه struct یا Class تعریف کنی میتونی با out هم خروجی بدی ولی قاعدتا اون خروجی ها مشخص کننده یه رفتارن، میتونی اگر دو تا خروجی بیشتر نداره از KeyValuePair هم استفاده کنی.