3

2つのグラフィカルオブジェクト(たとえば、ある種のオブジェクト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;
}

これはより短く、潜在的な追加テーブルは非常に簡単に追加されます。マイナス面はありますか?

4

3 に答える 3

7

間違っているとは限りませんが、私はあなたの元のアイデアを採用し、実際にそれをメソッドに入れます。代わりに、実際のテーブルを渡します。

public void Format(Table table)
{
    table.BorderWidth = 2;
    table.BorderColor = Color.GloriousPink;
}

foreach(Table table in tables) 
{
   Format(table);
}
于 2013-03-27T14:20:51.530 に答える
2

要件はわかりませんが、機能的なスタイルについてはどうでしょうか。

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);
于 2013-03-27T14:19:28.937 に答える
2

コンパイラに配列を作成させます。

void FormatTable(params Table[] tables)
{
    foreach(var table in tables)
    {
        table.BorderWidth = 2;
        table.BorderColor = Color.GloriousPink;
    }
}

そしてそれをそのように呼びます:

FormatTables( table1, table2);
于 2013-03-27T14:27:47.937 に答える