我一直想知道如何打破一個foreach循環,我可以得到輸出而不通過存儲在其中的整個元素。我的問題是,每當我使用break語句停止獲取第二個元素時,第一個元素也顯示出來。就像你只想得到第二個元素一樣,作爲回報,它會顯示第一個元素和第二個元素。我只想要第二個元素出現。foreach循環的break語句不按照計劃使用c#工作?
爲了更好地解釋這一點,這裏是我的代碼:
public partial class Pages_GuitarItemsIbanezDetails : System.Web.UI.Page
{
private string guitarBrandType = "Ibanez";
private int x = 0;
protected void Page_Load(object sender, EventArgs e)
{
FillPage();
}
public void FillPage()
{
ArrayList itemDetails = new ArrayList();
if (!IsPostBack)
{
itemDetails = ConnectionClass.GetItems("%");
}
else
{
itemDetails = ConnectionClass.GetItems(guitarBrandType);
}
StringBuilder sb = new StringBuilder();
foreach (GuitarItems gList in itemDetails)
{
sb.Append(
string.Format(
@"<div class='guitarItemsDetailsWrapper'>
<div class='guitarItemsDetailsImage'>
<img runat='server' src='{3}' />
</div>
<div class='guitarItemsDetailsStyle'>
<h2>Name: </h2><p>{0} {1}</p>
<br/>
<h2>Price: </h2><p>${2}</p>
<br/>
<h2>Description: </h2><p>{4}</p>
<br/>
<h2>Neck Type: </h2><p>{5}</p>
<br/>
<h2>Body: </h2><p>{6}</p>
<br/>
<h2>Fretboard: </h2><p>{7}</p>
<br/>
<h2>Bridge: </h2><p>{8}</p>
<br/>
<h2>Neck Pickup: </h2><p>{9}</p>
<br/>
<h2>Bridge Pickup: </h2><p>{10}</p>
<br/>
<h2>Hardware Color: </h2><p>{11}</p>
<br/>
</div>
</div>", gList.Type, gList.Model, gList.Price, gList.Image2, gList.Description, gList.NeckType,
gList.Body, gList.Fretboard, gList.Bridge, gList.NeckPickup, gList.BridgePickup, gList.HardwareColor));
if (++x == 2)
{
break;
}
}
lblOutput.Text = sb.ToString();
}
}
正如你可以在這裏看到我的foreach循環部分。我試圖用if語句將它從第三個循環中分解出來,這樣它可以顯示第二個元素,但是它會顯示第一個元素和第二個元素。希望你們可以幫助我只顯示第二個元素。隨意編輯並提出更好的代碼技術。
如果你只想要第二個元素 - 那麼爲什麼環在所有? –
循環基本上是爲所有事情做些事情。休息會停止循環,但循環所做的一切都已完成。使用索引器訪問列表,比如'itemDetails [1]''。 – Sascha
你已經選擇了很有可能的最難的(和難以維護)的方式來做到這一點。 –