PDA

View Full Version : سوال: return چند نوع datatype



didaaa
یک شنبه 25 مرداد 1388, 14:11 عصر
یکبار دیگه سلام:
من یه تابع می خوام تعریف کنم و داخل اون تابع چند نوع دیتا برگردونم ولی نمیدونم چطور؟:متفکر:
یه چیزی مثل این اما ارور میده.



class Class1
{
public string[] str = new string[5];
public int i2;
public string Cstr(string c)
{
str [i2]= c;
}
public string Cstr2(int c2)
{
return str[c2];

}
}

Atena_k
یک شنبه 25 مرداد 1388, 14:20 عصر
سلام
منظورتون از اینکه چند نوع دیتا برگردویند چیه؟
ما یک مفهوم Method Overloading داریم. آیا منظورتون همینه؟
همچنین می توانید آرگومان هایی را از نوع out به متد بفرستید.

hozouri
یک شنبه 25 مرداد 1388, 16:24 عصر
یکبار دیگه سلام:
من یه تابع می خوام تعریف کنم و داخل اون تابع چند نوع دیتا برگردونم ولی نمیدونم چطور؟:متفکر:
یه چیزی مثل این اما ارور میده.



class Class1
{
public string[] str = new string[5];
public int i2;
public string Cstr(string c)
{
str [i2]= c;
}
public string Cstr2(int c2)
{
return str[c2];

}
}



دوست عزیز معلومه این error میده متد اول بازگشت نشده.

alireza_tavakol
یک شنبه 25 مرداد 1388, 16:28 عصر
یکبار دیگه سلام:
من یه تابع می خوام تعریف کنم و داخل اون تابع چند نوع دیتا برگردونم ولی نمیدونم چطور؟:متفکر:
یه چیزی مثل این اما ارور میده.




public string Cstr2(int c2)
{
return str[c2];

}



خروجی متد بالا String تعریف شده ولی داری Char برمیگردانید

این پست فاقد محتوای علمی می باشد به اشتباهم پیبردم

hozouri
یک شنبه 25 مرداد 1388, 16:31 عصر
خروجی متد بالا String تعریف شده ولی داری Char برمیگردانید

دوست عزیز فکر کنم شما نوع char و string رو با هم اشتباه گرفتید. string ها هم می تونند آرایه ای باشند و در کد بالا رشته اندیس مربوطه برگشت داده می شه نه یه کاراکتر ...

alireza_tavakol
یک شنبه 25 مرداد 1388, 16:38 عصر
دقیقا" متد بالا رو کپی نمایید تا با error زیر مواجه شوید !

cannot implicitly convert type 'char' to 'string'

اگه من منظورتون رو دورست نفهمیدم ( لطفا " ) کمی توضیح دهید

با تشکر

این پست فاقد محتوای علمی می باشد به اشتباهم پیبردم

hozouri
یک شنبه 25 مرداد 1388, 16:58 عصر
دوست عزیز به نظر شما دستور زیر چه کاری رو انجام میده ؟؟؟


string[] s = new string[2];
s[0] = "ali";
s[1] = "hasan";
MessageBox.Show("s[0] = " + s[0]);
MessageBox.Show("s[1] = " + s[1]);


برای درک بهتر این کد رو اجرا کن.

hozouri
یک شنبه 25 مرداد 1388, 17:04 عصر
دقیقا" متد بالا رو کپی نمایید تا با error زیر مواجه شوید !

cannot implicitly convert type 'char' to 'string'

اگه من منظورتون رو دورست نفهمیدم ( لطفا " ) کمی توضیح دهید

با تشکر

دوست عزیز لطفاً اشتباه مطلبی رو به کاربران انتقال ندید کد رو هم کپی کردم برای شمایی که کد رو کپی نکردید و نمی دونم این اخطار رو روی چی سندی میگید : اخطار ::


not all code paths return a value


string یه یه کلاسه و char یه struct این دو خیلی با هم متفاوتند ...

alireza_tavakol
یک شنبه 25 مرداد 1388, 18:33 عصر
با تشکر از آقای حضوری

دو تا پست بالا رو تکذیب کردم

Sociant
دوشنبه 26 مرداد 1388, 22:46 عصر
سلام
منظورتون از اینکه چند نوع دیتا برگردویند چیه؟
ما یک مفهوم Method Overloading داریم. آیا منظورتون همینه؟

1-Method overloading به نوع بازگشتی تابع کاری نداره
2- ایشون یک تابع میخوان با نوع بازگشتی متفاوت در صورتی که Method Overloading روی ایجاد چند متد(همنام) با آرگومانهای ورودی متفاوت تمرکز داره

سوالشون کاملا شفاف نیست ولی میشه گفت باید نوع بازگشتی متد رو Object قرار بدن و توی متد فراخوانی کننده ، تبدیلش کنن به نوع مورد نظر

البته مشکل performance داره این کار ،

Atena_k
سه شنبه 27 مرداد 1388, 00:36 صبح
1-Method overloading به نوع بازگشتی تابع کاری نداره
2- ایشون یک تابع میخوان با نوع بازگشتی متفاوت در صورتی که Method Overloading روی ایجاد چند متد(همنام) با آرگومانهای ورودی متفاوت تمرکز داره

سوالشون کاملا شفاف نیست ولی میشه گفت باید نوع بازگشتی متد رو Object قرار بدن و توی متد فراخوانی کننده ، تبدیلش کنن به نوع مورد نظر

البته مشکل performance داره این کار ،
وقتی سوال مشخص نیست، طبیعتا جواب هم مشخص نخواهد بود.علاوه بر این استفاده از ارث بری ها،استفاده از اینترقیس ها و... به مراتب بهتر از استفاده از نوع object می باشد!

اگر خوب به نمونه کد هایی ارسالی توجه کنید، آرگومان های ورودی دو متد متفاوت هستند و نوع بازگشتی هر دو یکسانو البته نام متد ها هم متفاوت. به همین دلیل من حدس زدم که ایشون به دنبال مفهومی به نام MethodOverloading می باشند که از آن بی اطلاع هستند.
علاوه بر این مفهوم دیگری به نام output parameters را مطرح کردم که شاید منظورشون این باشد.


پ ن:
کسی که خوب سوال نمی پرسد لیاقت جواب خوب گرفتن را نیز ندارد!