C# 包含对winform控件的引用的数组

C# 包含对winform控件的引用的数组,c#,visual-studio-2010,C#,Visual Studio 2010,我正在使用VisualStudio2010进行winform项目。我在创建包含对Button或任何其他winform控件的引用的数组时注意到了这种情况。如果我这样写: Button[] buttonArray; buttonArray = {Button1, Button2}; 我将得到多个错误,例如只有赋值、调用、递增、递减和新对象表达式可以用作语句,以及无效的表达式项“{”等等 关于您的信息,按钮1和按钮2在表格上 即使这样做,我仍然会遇到同样的错误: Button[] buttonArr

我正在使用VisualStudio2010进行winform项目。我在创建包含对Button或任何其他winform控件的引用的数组时注意到了这种情况。如果我这样写:

Button[] buttonArray;
buttonArray = {Button1, Button2};
我将得到多个错误,例如只有赋值、调用、递增、递减和新对象表达式可以用作语句,以及无效的表达式项“{”等等

关于您的信息,按钮1和按钮2在表格上

即使这样做,我仍然会遇到同样的错误:

Button[] buttonArray = new Button[2];
buttonArray = { Button1, Button2};
但是,如果我这样做,Visual Studio会接受:

Button[] buttonArray = new Button[2];
buttonArray[0] = Button1;
buttonArray[1] = Button2;
有人能告诉我哪里出了问题吗?我认为包含控件引用的数组与字符串数组具有相同的本质

谢谢。

尝试使用语法

在第一个示例中,您还可以用var替换Button[],因为C编译器足够聪明,可以从初始化部分推断类型

数组也可以在不使用new[]near变量声明的情况下初始化

Button[] buttonArray = { Button1, Button2 };
但请注意,当您使用这种语法时,不能使用var关键字。所以下一个代码是非法的:


此处定义了正确的数组初始化语法:

执行此操作时:

Button[] buttonArray;
buttonArray = {Button1, Button2};
您没有使用数组初始化语法。您所做的是声明一个按钮数组,但不实例化它,然后尝试将该按钮数组分配给一个代码块。数组初始化语法在分配之外无效。类似于

void MyMethod()
{
    string[] s;
    { 
        int i = 0; 
    }
}
是C中的有效代码块;方法中的卷曲只会改变作用域。无法将代码块分配给变量,例如:

void MyMethod()
{
    string[] s;
    s = 
    {
        int i = 0; 
    }; //Totally INVALID!
}
您需要将声明和初始化结合起来,或者在数组中添加新的属性

Button[] buttonArray = { Button1, Button2 }; //Valid

Button[] buttonArray;
buttonArray = new Button[] { Button1, Button2 }; //Also valid!

您的语法错误,即使不需要新的[]。接受此答案,因为它清楚地解释了此buttonArray={Button1,Button2};代码行中实际发生的情况。感谢您的回答。
void MyMethod()
{
    string[] s;
    { 
        int i = 0; 
    }
}
void MyMethod()
{
    string[] s;
    s = 
    {
        int i = 0; 
    }; //Totally INVALID!
}
Button[] buttonArray = { Button1, Button2 }; //Valid

Button[] buttonArray;
buttonArray = new Button[] { Button1, Button2 }; //Also valid!