如何缩短此通用列表?

时间:2013-01-24 00:37:31

标签: c# winforms visual-studio-2012

我的问题很简单:如何进一步缩短此代码?

 List<Button> buttonList = new List<Button>();

        buttonList.Add(button1);
        buttonList.Add(button2);
        buttonList.Add(button3);
        buttonList.Add(button4);
        buttonList.Add(button5);
        buttonList.Add(button6);
        buttonList.Add(button7);
        buttonList.Add(button8);
        buttonList.Add(button9);

4 个答案:

答案 0 :(得分:2)

尝试collection initializer

List<Button> buttonList = new List<Button>() 
{    
     button1,
     button2,
     button3,
     button4,
     button5,
     button6,
     button7,
     button8,
     button9
 }

答案 1 :(得分:1)

您可以使用collection initializer

var buttonList = new List<Button>
{
   button1, button2, button3,
   //...
};

答案 2 :(得分:0)

您可以使用集合初始值设定项:

List<Button> buttonList = new List<Button>
{
    button1,
    button2,
    button3,
    button4,
    button5,
    button6,
    button7,
    button8,
    button9,
}

答案 3 :(得分:0)

如果您的按钮存储在某个控件的Controls集合中(例如,FormPanel),那么您可以使用:

//here `this` is supposed to be a `Form`
List<Button> buttonList = this.Controls.OfType<Button>() 
                                       .OrderBy(b=>b.Name)
                                       .ToList();

在这种情况下,您可以使用您的方法,返回存储在某个容器控件中的可枚举按钮:

public IEnumerable<Button> GetButtons()
{
    return this.Controls.OfType<Button>().OrderBy(b => b.Name);
    //return this.panel1.Controls.OfType<Button>().OrderBy(b => b.Name);
    //actually any container control you're having your buttons within
}

你可以使用它:

foreach(Button b in GetButtons())
{
    //...
}