PDA

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



jd.mn98
چهارشنبه 22 بهمن 1393, 16:37 عصر
سلام دوستان
آیا میشه تو سی شارپ تابعی بنویسیم که بیش از یک مقدار را برگرداند؟ مثلا هم bool و هم string برگردونه

plus
چهارشنبه 22 بهمن 1393, 18:36 عصر
مقدار خروجی (Return Value) در #C تنها یک مقدار هست. برای بازگردوندن بیش از یک مقدار، دو راه وجود داره. اول، استفاده از آرگومان های نوع out (یا ref). دوم استفاده از یک class یا struct که شامل مقادیر مورد نظر میشن.
روش اول:

private void Calculate(int m, int n, out long sum, out long multiply) {
sum = m + n;
multiply = m * n;
}

متدی که دو عدد میگیره و حاصل جمع و حاصلضرب اونها رو برمیگردونه.
روش دوم:

struct CalculateResult {
public long Multiply {
get;
set;
}
public long Sum {
get;
set;
}
}
private CalculateResult Calculate(int m, int n) {
CalculateResult result = new CalculateResult();
result.Sum = m + n;
result.Multiply = m * n;
return result;
}

البته توجه کنید که اگه تعداد اعضا بالا باشه بهتره از class بجای struct استفاده کنید.
--
اگه قراره متد، خروجی ای با مفهوم لیست مانند برگردونه، میتونید نوع خروجی رو یک آرایه یا لیست بگیرید:

private int[] GetDivisors(int n) {
List<int> divisors = new List<int>();
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
divisors.Add(i);
}
}
return divisors.ToArray();
}

متدی که مقسوم علیه های عدد ورودی به به صورت یک آرایه برمیگردونه.