EDIT: Я понял, что я прошел совсем не так, и после капитального ремонта заработал. Спасибо за советы, ребята, я буду помнить их о будущем.Возврат каждого значения из цикла for в C#
У меня возникла необычная проблема в моей программе. Мне нужно найти разницу между двумя моментами, разделить ее на 1,5 часа, а затем вернуть начальное время, за которым следует каждые 1,5 часа прироста времени начала. Так что, если время было 11:45 - 14:45, разница во времени - три часа, 3/1,5 = 2, затем возвращение 11:45 и 13:15. На данный момент я могу делать все, кроме возвращения более одного раза. В зависимости от того, что я пробовал, он возвращает либо начальное время (11:45), первое приращение (1:15 pm), либо время окончания (14:45). До сих пор я пробовал несколько разных типов циклов for и do/while. Самое близкое, что я пришел, это просто конкатенация времени начала и возрастания времени, но время начала и окончания может варьироваться от 3 до 6 часов, так что это не практический способ сделать это.
последняя вещь, которую я попробовал:
int i = 0;
do{
i++;
//Start is the starting time, say 11:45 am
start = start.AddMinutes(90);
return start.ToShortTimeString();
} while (i < totalSessions); //totalSessions is the result of hours/1.5
и я вызова функции динамической метки (который также в цикле):
z[i] = new Label();
z[i].Location = new Point(PointX, PointZ);
z[i].Name = "sessionTime_" + i;
z[i].Text = getPlayTimes(dt.Rows[i][1].ToString());
tabPage1.Controls.Add(z[i]);
z[i].BringToFront();
PointZ += z[i].Height;
Я довольно новый на C#, поэтому, я думаю, я что-то неправильно понял.
Вы не можете «возвращать» из функции несколько раз. Вы можете использовать 'yield return', если вы измените возвращаемый тип функции на' IEnumerable ', но неясно, действительно ли это то, что вы хотите сделать. –
Первый абзац слишком сложный для понимания. –
Спасибо @DStanley, я понятия не имел, что даже существует. –