[英]How to identify last iteration in while(true) loop in c#
這是C#代碼..
while (true)
{
DateTime dtNext = start.AddMinutes(duration);
if (start > end || dtNext > end)
break;
if (start < DateTime.Parse("12:00 PM"))
{
if (!doneMornHeader)
{
Label head = new Label();
head.Text = string.Format(header, "Morning");
this.Timediv.Controls.Add(head);
doneMornHeader = true;
}
morning = start.ToShortTimeString() + "-" + dtNext.ToShortTimeString();
Label lbl = new Label();
lbl.ID = "ImpLabel" + k;
lbl.Text = morning;
CheckBox cb = new CheckBox();
cb.ID = "ImpCheckbox" + k;
this.Timediv.Controls.Add(new LiteralControl("<div class='task low'>"));
this.Timediv.Controls.Add(new LiteralControl("<div class='desc'>"));
this.Timediv.Controls.Add(new LiteralControl("<div class='title'>"));
this.Timediv.Controls.Add(lbl);
this.Timediv.Controls.Add(new LiteralControl("<div class='make-switch span5 pull-right' data-on='success'>"));
this.Timediv.Controls.Add(cb);
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("<br>"));
k++;
}
else
{
if (!doneAfternoonHeader)
{
Label head = new Label();
head.Text = string.Format(header1, "Afternoon");
this.Timediv.Controls.Add(head);
doneAfternoonHeader = true;
}
afternon = start.ToShortTimeString() + "-" + dtNext.ToShortTimeString();
Label lbl1 = new Label();
lbl1.ID = "ImpLabel" + k;
lbl1.Text = afternon;
CheckBox cb1 = new CheckBox();
cb1.ID = "ImpCheckbox" + k;
this.Timediv.Controls.Add(new LiteralControl("<div class='task medium'>"));
this.Timediv.Controls.Add(new LiteralControl("<div class='desc'>"));
this.Timediv.Controls.Add(new LiteralControl("<div class='title'>"));
this.Timediv.Controls.Add(lbl1);
this.Timediv.Controls.Add(new LiteralControl("<div class='make-switch span5 pull-right' data-on='success'>"));
this.Timediv.Controls.Add(cb1);
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("</div>"));
this.Timediv.Controls.Add(new LiteralControl("<br>"));
k++;
}
start = dtNext;
}
現在我想找出while循環的最后一次迭代...
在最后一次迭代中,我想改變
this.Timediv.Controls.Add(new LiteralControl("<div class='task low'>"));
至
this.Timediv.Controls.Add(new LiteralControl("<div class='task low last'>"));
在if和else中
即在早上和下午的會議..
怎么能找到最后一次迭代?
這是你的最后一次迭代:
if (start > end || dtNext > end)
break;
另外,在你進入最后一次迭代之前,你可以引入一些小的檢查:
DateTime tempDtNext = start.AddMinutes(duration);
var tempStart = tempDtNext;
var isGoingToEnd = (tempStart > end || tempDtNext > end);
this.Timediv.Controls.Add(new LiteralControl(string.Format("<div class='task low {0}'>", isGoingToEnd ? "last" : string.Empty));
是否有理由在break
之前無法添加控件? 這似乎是您退出循環的地方:
while(true)
{
if (start > end || dtNext > end)
{
//add control
this.Timediv.Controls.Add(new LiteralControl("<div class='task low last'>"));
break;
}
//do stuff..
}
另外,如果你有一個可以終止循環的條件,為什么還要麻煩while(true)
?
它應該是:
while(start < end || dtNext < end)
{
//...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.