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

Set Multilple Attributes at Once in C#

我认识到,当我想在 c# 中为多个 objects/controls(这里是标签)设置相同的属性时,我将不得不经常键入相同的代码。 这通常看起来像这样:

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;

您可以像这样在一行中完成所有操作。

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"; });
string s = "one attribute";
label1.Text = 
label2.Text = 
label3.Text = 
label4.Text = 
label5.Text = s;

我知道您可以分配多个变量,例如:

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;

另一种方法:

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";
}