通过使用变量引用表单对象来优化C#代码
我希望能够将表单上的几个标签重置为“0”。 我通过引用每个标签来计算。我还使用了数组和for循环,这似乎更有效率。是否有一种方法可以通过使用for变量并构造一个字符串来引用每个标签名,该字符串的计算结果为标签名,而无需数组 像这样:通过使用变量引用表单对象来优化C#代码,c#,C#,我希望能够将表单上的几个标签重置为“0”。 我通过引用每个标签来计算。我还使用了数组和for循环,这似乎更有效率。是否有一种方法可以通过使用for变量并构造一个字符串来引用每个标签名,该字符串的计算结果为标签名,而无需数组 像这样: for (int x = 0; x < 6; x++) lbls[x].Text = "0"; for(int x=0;xl.Text=“0”)`您可能应该将所有标签放在面板或其他容器中,然后获取该容器的控件,
for (int x = 0; x < 6; x++)
lbls[x].Text = "0";
for(int x=0;x<6;x++)
lbls[x].Text=“0”;
这是我的密码:
// Clear form labels
private void btnClear_Click(object sender, EventArgs e)
{
Label[] lbls = new Label[]
{
lbl1, lbl2,lbl3,lbl4,lbl5,lbl6
};
for (int x = 0; x < 6; x++)
lbls[x].Text = "0";
//lbl1.Text = "0";
//lbl2.Text = "0";
//lbl3.Text = "0";
//lbl4.Text = "0";
//lbl5.Text = "0";
//lbl6.Text = "0";
}
//清除表单标签
私有void btnClear\u单击(对象发送者,事件参数e)
{
标签[]lbls=新标签[]
{
lbl1、lbl2、lbl3、lbl4、lbl5、lbl6
};
对于(int x=0;x<6;x++)
lbls[x].Text=“0”;
//lbl1.Text=“0”;
//lbl2.Text=“0”;
//lbl3.Text=“0”;
//lbl4.Text=“0”;
//lbl5.Text=“0”;
//lbl6.Text=“0”;
}
如果没有其他标签:
this.Controls.OfType<Label>()
这将更加昂贵,因为您需要使用反射按名称查找对象,并将其文本属性设置为“0” 如果您想要小一点的东西,这里有一条线:
new List<Label>() { lbl1, lbl2, lbl3, lbl4, lbl5, lbl6 }.ForEach(x => x.Text = "0");
newlist(){lbl1,lbl2,lbl3,lbl4,lbl5,lbl6}.ForEach(x=>x.Text=“0”);
…虽然有点恶心:)我认为代码应该是这样的:`this.Controls.OfType().ToList().ForEach(l=>l.Text=“0”)`您可能应该将所有标签放在面板或其他容器中,然后获取该容器的
控件
,这样以后添加标签不会产生意外的副作用。这是事实,但这只是因为我假设他不想使用表单上的其他标签。如果他想在特定标签上执行此操作,这可能是最干净的。除非如servy所述,他将所有标签都分配给一个父面板。
new List<Label>() { lbl1, lbl2, lbl3, lbl4, lbl5, lbl6 }.ForEach(x => x.Text = "0");