#c# #return
#c# #Возврат
Вопрос:
Из следующего кода я хочу y
вернуть несколько значений, но программа возвращает только последнее.
public int runDraw()
{
for (int j = 1; j <= numberofDraws; j )
{
...
if (even_count > odd_count)
{
Console.WriteLine("The result of {0} draw is Even.", j);
y = 1;
}
else if (even_count < odd_count)
{
Console.WriteLine("The result of {0} draw is Odd.", j);
y = 2;
}
else
{
Console.WriteLine("The result of {0} draw is Draw.", j);
y = 3;
}
}
return y;
}
Комментарии:
1. Какой тип объекта вы хотите, чтобы возвращал метод?
2.
y
одновременно может содержать только одно значение. Тот факт, что вы повторно устанавливаете его в цикле, ничего не меняет, и это происходит толькоreturn
после выполнения всего цикла3. Вы можете использовать метод iterator.
Ответ №1:
Одним из вариантов было бы вернуть перечисление int, поскольку один int не может представлять несколько значений напрямую. Вот пример использования yield return
, который затруднит переход к следующему значению, только если вы когда-нибудь попросите об этом.
public IEnumerable<int> runDraw()
{
for (int j = 1; j <= numberofDraws; j )
{
...
if (even_count > odd_count)
{
Console.WriteLine("The result of {0} draw is Even.", j);
yield return 1;
}
else if (even_count < odd_count)
{
Console.WriteLine("The result of {0} draw is Odd.", j);
yield return 2;
}
else
{
Console.WriteLine("The result of {0} draw is Draw.", j);
yield return 3;
}
}
yield return y;
// What you do here really depends on your unshared logic
// You might return 0 or throw an exception if this is invalid
}
Затем вы можете обращаться к значениям итеративно, например, с помощью foreach
цикла:
foreach (int j in runDraw())
{
Console.WriteLine(j);
}
Ответ №2:
вы можете достичь этого с помощью массива или коллекции.
-
Использование массива
int[] result = new int[numberofDraws]; result[j] = your result (1,2,3 based on condition) return result;
-
Использование списка
List<int> result = new List<int>(); result.Add(1); return resu<
Примечание: измените возвращаемый тип в соответствии с использованием, если вы собираетесь использовать массив int[]
, если вы собираетесь использовать список List<int>
.
Ответ №3:
Вы можете использовать out параметры или кортежи для возврата нескольких значений из любой функции, проверьте их наличие.