PDA

View Full Version : تعريف چند خروجي متفاوت از چند جنس متفاوت براي يك متد



AmirGhasemi
پنج شنبه 23 شهریور 1391, 16:28 عصر
سلام دوستان!
من يك متد نوشتم كه دو متغير از جنس int گرفته و يك خروجي از جنس string مي دهد!
اما مي خواهم در همين uعلاوه بر خروجي string دو خروجي int و يك خروجي از جنس ديگرمثلا image هم بدهد!! داخل همين متد!!! چكار بايد بكنم؟
لطفا با ذكر كد مرا از راهنمايي كنيد


public string Action(int a, int b)
{
int intSum = a + b;
int intMult = a * b;
string strSum = System.Convert.ToInt32(intSum).ToString();


}

مسعود اقدسی فام
پنج شنبه 23 شهریور 1391, 16:38 عصر
سلام دوستان!
من يك متد نوشتم كه دو متغير از جنس int گرفته و يك خروجي از جنس string مي دهد!
اما مي خواهم در همين uعلاوه بر خروجي string دو خروجي int و يك خروجي از جنس ديگرمثلا image هم بدهد!! داخل همين متد!!! چكار بايد بكنم؟
لطفا با ذكر كد مرا از راهنمايي كنيد


public string Action(int a, int b)
{
int intSum = a + b;
int intMult = a * b;
string strSum = System.Convert.ToInt32(intSum).ToString();


}


می تونید آرایه ای از شی (object) تعریف کنید و هر چه می خواید برگردونید داخلش بریزید و برگردونید. محل فراخوانی متناسب با شماره اندیس به عدد صحیح یا عکس یا رشته تبدیل کنید. یه روش هم استفاده out یا ref هست که یه متغیر اضافی به تابع ارسال می کنید و تابع مقدار متغیر رو تغییر می ده. این تغییر روی پارامتر ارسال شده از تابع فراخواننده هم اثر داره.




func1()
{
object[] res = func2(5,7);
int a1 = Convert.ToInt32(res[0]);
string s1 = Convert.ToString(res[1]);
...
int a1;
string s2;
func3(5,6,out a1, out s2 )
}

func2(int n1, int n2)
{
object[] o = new object[5];
o[0]=5;
o[1] = "hi";
}

func3(int n1, int n2, out int n3, out string s)
{
n3 = 5;
s = "hi";
}

AmirGhasemi
جمعه 24 شهریور 1391, 00:24 صبح
سلام دوستان
هيچ كس راه حل بهتري ارائه نمي دهد؟؟؟!

silverfox
جمعه 24 شهریور 1391, 00:31 صبح
یه کلاس درست کن اون string, image, int اینارو بذار توش اون رو با تابع برگردون

AmirGhasemi
جمعه 24 شهریور 1391, 11:17 صبح
دوستان عزيز يعني واقعا كسي نيست كه تا بحال با اين مشكل برخورد كرده باشه؟

مسعود اقدسی فام
جمعه 24 شهریور 1391, 11:50 صبح
دوستان عزيز يعني واقعا كسي نيست كه تا بحال با اين مشكل برخورد كرده باشه؟

پس این راه حل‌هایی که گفتیم چی بودن؟!

روشی که دوستمون توضیح داد هم یه روش دیگشه. اینطوری:




struct data
{

public int a;
public string s;
public Image img;
public double d;
}

func1()
{
data dat = func2();
//dat.a
//dat.s
//dat.img
//dat.d
}

func2()
{
data res;
res.a = 5;
res. d = 6.5;
res. s = "Hi";
return res;
}




البته جای ساختار می شد از کلاس هم استفاده کرد.

ما بد توضیح دادیم یا شما کدش رو نمی تونید جمع و جور کنید؟

NasrEsk
جمعه 24 شهریور 1391, 12:02 عصر
دوست عزیز،
این چه تابعی هست که دوتا int میگیره چندتا متغیر پس میده؟
از Out استفاده کن
اگه نمیدونی تا توضیح بدم

AmirGhasemi
جمعه 24 شهریور 1391, 13:05 عصر
ممنون مي شوم اگر روش out را كامل توضيح دهيد!
من از دوست عزيزم جناب مسعود اقدسي فام كمال تشكر را دارم ولي انتظار من با اين مثال ايشان برآورده نشده
هر چند كه ايشان كمك شاياني به من كردند! من فعلا چند متغير را بطور همزمان با استفاده از آرايه object برگشت مي دهم ولي مي خواهم فهم دقيق تري از ref , out داشته باشم
ممنون

مسعود اقدسی فام
جمعه 24 شهریور 1391, 14:32 عصر
ممنون مي شوم اگر روش out را كامل توضيح دهيد!
من از دوست عزيزم جناب مسعود اقدسي فام كمال تشكر را دارم ولي انتظار من با اين مثال ايشان برآورده نشده
هر چند كه ايشان كمك شاياني به من كردند! من فعلا چند متغير را بطور همزمان با استفاده از آرايه object برگشت مي دهم ولي مي خواهم فهم دقيق تري از ref , out داشته باشم
ممنون

شما لطف دارید.

شما می‌پرسید روش دیگه، نه اینکه با out مشکل دارید. مثال out رو هم همراه با آرایه‌ای از اشیاء زدم همون مثال اول.