我认识到,当我想在c#中为多个对象/控件(这里是标签)设置相同的属性时,我必须经常输入相同的代码。 这通常是这样的:
string s = "one attribute";
label1.Text = s;
label2.Text = s;
label3.Text = s;
label4.Text = s;
label5.Text = s;
有没有办法更快地用更少的代码来做这件事? 我想象这样的事情:
string s = "one attribute";
(label1 && label2 && label3 && label4 && label5).Text = s;
解答:
string s = "one attribute";
label1.Text =
label2.Text =
label3.Text =
label4.Text =
label5.Text = s;
答案 0 :(得分:7)
你可以像这样在一行中完成所有这些。
label1.Text = label2.Text = label3.Text = label4.Text = label5.Text = "one attribute";
编辑:如果你想在一个数组中保留标签,那么这是另一种方法,而不是每次都实际写出foreach循环。
Label[] labels = new[] { label1, label2, label3, label4, label5 };
Array.ForEach(labels, x => { x.Text = "one attribute"; });
答案 1 :(得分:1)
另一种方法:
foreach(var label in new [] { label1, label2, label3, label4, label5 })
{
label.Text = "one attribute";
}
如果您在多个地方执行此操作,将该数组存储在某处可能会更方便:
IEnumerable<Label> labelsToUpdate = new [] { label1, label2, label3, label4, label5 };
foreach(var label in labelsToUpdate)
{
label.Text = "one attribute";
}
答案 2 :(得分:0)
string s = "one attribute";
label1.Text =
label2.Text =
label3.Text =
label4.Text =
label5.Text = s;
答案 3 :(得分:0)
我知道你可以分配多个变量,如:
label1.Text = label2.Text = "Whatever";
然而我讨厌这个。在将来的某个时候,您可能希望重构代码而不是以这种方式设置变量。
我宁愿这样做:
String InitStr = "Whatever";
label1.Text = InitStr;
label2.Text = InitStr;
label3.Text = InitStr;
label4.Text = InitStr;
将来,如果您决定要更改label3的值,那么它会更清晰。
String InitStr = "Whatever";
label1.Text = InitStr;
label2.Text = InitStr;
label3.Text = "new whatever";
label4.Text = InitStr;