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