对同一类型的多个对象执行大量操作
本文关键字:执行 对象 操作 类型 | 更新日期: 2023-09-27 18:06:02
我有两个图形对象(比如某种Table
),我想设置它们的样式。简单的代码如下:
table1.BorderWidth = 2;
table1.BorderColor = Color.GloriousPink;
table2.BorderWidth = 2;
table2.BorderColor = Color.GloriousPink;
(实际代码有更多行)
更聪明的方法是使用方法。
void Format Table(int tableIndex)
{
Table table;
if(tableIndex == 1)
table = table1;
if(tableIndex == 2)
table = table2;
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
我正在考虑一种使其更具可扩展性的方法(if
/switch
部分增长得很快),我想到了:
foreach(Table table in new List<Table> { table1, table2 })
{
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
更短,添加任何潜在的附加表都非常简单。它有什么缺点吗?
没有跳出来作为错误的,但我会与你原来的想法,实际上把它放在一个方法,只是在实际的表传递。
public void Format(Table table)
{
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
foreach(Table table in tables)
{
Format(table);
}
我不知道你的要求,但是一些功能风格如何:
Action<Table> formatTable = (table) => {
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
};
new List<Table> { table1, table2 }.ForEach(formatTable);
如果你不喜欢这些Action
的东西:
void FormatTable(Table table)
{
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
new List<Table>{ table1, table2 }.ForEach(FormatTable);
让编译器创建数组:
void FormatTable(params Table[] tables)
{
foreach(var table in tables)
{
table.BorderWidth = 2;
table.BorderColor = Color.GloriousPink;
}
}
并这样命名:
FormatTables( table1, table2);