我现在正在处理一个程序,我想知道是否有可能返回每个循环中生成的对象/值/变量的返回函数?下面是我想要的代码。我唯一的错误是返回值。
for (int i = 1; i < ProductArray.Length; i++)
{
Label lbl = new Label();
ThresholdPanel.Controls.Add(lbl);
lbl.Top = A * 28;
lbl.Left = 15;
lbl.Font = new Font(lbl.Font, FontStyle.Bold);
lbl.Text = ProductArray[i];
lbl.Name = "Label" + ProductArray[i];
TextBox txt = new TextBox();
ThresholdPanel.Controls.Add(txt);
txt.Top = A * 28;
txt.Left = 125;
//txt.Text = "Text Box All" + this.A.ToString();
txt.Name = "txt" + A;
textBoxes[txt.Name] = txt;
A = A + 1;
return txt;
return lbl;
}
提前致谢,如果这真的是一个简单的问题,我很抱歉......
答案 0 :(得分:4)
使用yield return
代替return
,只要该方法返回IEnumerable<T>
,其中T
是您想要产生的类型。它将生成一个返回一系列项目的方法,并为yield return
的每个项目为该序列添加一个项目。
答案 1 :(得分:2)
使用收益率返回,如提供的样本:
IEnumerable<string> Test()
{
for (int i = 1; i < ProductArray.Length; i++)
{
Label lbl = new Label();
ThresholdPanel.Controls.Add(lbl);
lbl.Top = A * 28;
lbl.Left = 15;
lbl.Font = new Font(lbl.Font, FontStyle.Bold);
lbl.Text = ProductArray[i];
lbl.Name = "Label" + ProductArray[i];
TextBox txt = new TextBox();
ThresholdPanel.Controls.Add(txt);
txt.Top = A * 28;
txt.Left = 125;
//txt.Text = "Text Box All" + this.A.ToString();
txt.Name = "txt" + A;
textBoxes[txt.Name] = txt;
A = A + 1;
yield return txt;
}
}
的更多详情