PDA

View Full Version : سوال: در مورد نوشتن تابع



yashar_ad
پنج شنبه 18 شهریور 1389, 18:14 عصر
سلام
لطفن منو راهنمایی کنید در مورد نوشتن تابع
چطور میتونم یک تابع داشته باشم که یک مقدار بگیره ولی در آخر کار ۲ مقدار برگردونه

من منظورم این بود که یک تابع از جنس float دارم که یک مقدار مگیرد و Cos و Sin مقدار گرفته شده را با return بر می گرداند ؛مشکل من اینجاست که return فقط یک مقدار بر میگرداند.با تشکر

na3er-faraji
پنج شنبه 18 شهریور 1389, 18:18 عصر
کافیه یکی از متغیرها byRef باشه.


///
private void MyTestMethod ( )
{
int a, b;

MyOutMethod( out a, out b );
MyRefMethod( ref a, ref b );

Console.WriteLine( "A: {0}\nB: {1}", a, b );
}

private void MyRefMethod ( ref int a, ref int b )
{
a++;
b--;
}

private void MyOutMethod ( out int a, out int b )
{
a = 5;
b = 10;
}
///

A: 6
B: 9

manij_mhm
پنج شنبه 18 شهریور 1389, 18:25 عصر
سلام.
می تونید همونطور که دوستمون گفتند از ref استفاده کنید. که باعث می شه تمام تغببرات اعمال شده روی این متغیر ها بعد از خروج از تابع باقی بماند.

می تونید از struct یا class هم استفاده کنید. هر فیلد stract رو به عنوان یه خروجی در نظر بگیرید.

manij_mhm
پنج شنبه 18 شهریور 1389, 19:40 عصر
در قسمت مقدار بازگشتی نمی تونید بیش از یک شی یا متغیر برگردانید.
برای استفاده از بیش از یک مقدار یا باید از مرجع استفاده کنید و یا از یه ارایه یا همون struct که دارای دو فیلد باشه که بتونید جوابها رو درونش ذخیره و یک شی اون هم همون struct رو برگردونید.

Salar Ashgi
پنج شنبه 18 شهریور 1389, 20:01 عصر
اگر فقط قصد چاپ اطلاعات را دارید :



string SinCos(double n)
{
string str = "Sin(" + n.ToString() + "): " + Math.Sin(n).ToString() + "\n";
str += "Cos(" + n.ToString() + "): " + Math.Cos(n).ToString();
return str;
}

نحوه استفاده :


string val = SinCos(30);
MessageBox.Show(val);


و نه ، اگر میخواهید از مقادیر برگشتی استفاده کنید ، همانطور که دوستان ذکر کردند :



void SinCos2(double n, ref double sin_res, ref double cos_res)
{
sin_res = Math.Sin(n);
cos_res = Math.Cos(n);
}

نحوه استفاده :


double sres = 0, cres = 0;
SinCos2(30, ref sres, ref cres);
MessageBox.Show(sres.ToString() + " , " + cres.ToString());

موفق باشید ./