在C#中一次设置多个属性

时间:2015-03-16 17:15:49

标签: c# .net winforms properties

我认识到,当我想在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;

4 个答案:

答案 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;