Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么此二维阵列初始化是非法的?_C#_.net - Fatal编程技术网

C# 为什么此二维阵列初始化是非法的?

C# 为什么此二维阵列初始化是非法的?,c#,.net,C#,.net,有人能解释一下为什么下面的电路板初始化不工作吗?这是我的密码: public partial class frmSudoku : Form { Label[,] board; public frmSudoku() { InitializeComponent(); board = {{lblS00, lblS01, lblS02, lblS03, lblS04, lblS05, lblS06, lblS07, lblS08},

有人能解释一下为什么下面的电路板初始化不工作吗?这是我的密码:

public partial class frmSudoku : Form
{
   Label[,] board;    

   public frmSudoku()
   {
      InitializeComponent();
      board = {{lblS00, lblS01, lblS02, lblS03, lblS04, lblS05, lblS06, lblS07, lblS08},
                 {lblS10, lblS11, lblS12, lblS13, lblS14, lblS15,lblS16,lblS17, lblS18},
                 {lblS20, lblS21, lblS22, lblS22, lblS24, lblS25, lblS26, lblS27, lblS28},
                 {lblS30, lblS31, lblS32, lblS33, lblS34, lblS35, lblS36, lblS37, lblS38},
                 {lblS40, lblS41, lblS42, lblS43, lblS44, lblS45, lblS46, lblS47, lblS48},
                 {lblS50, lblS51, lblS52, lblS53, lblS54, lblS55, lblS56, lblS57, lblS58},
                 {lblS60, lblS61, lblS62, lblS63, lblS64, lblS65, lblS66, lblS67, lblS68},
                 {lblS70, lblS71, lblS72, lblS73, lblS74, lblS75, lblS76, lblS77, lblS78},
                 {lblS80, lblS81, lblS82, lblS83, lblS84, lblS85, lblS86, lblS87, lblS88}};
 }
我在VS2019上,每个逗号下都有红色下划线——它们的错误消息只是;显然不正确的预期;我试着用分号替换它,只是为了看,而红色下划线只是在标签下面移动了一个错误消息,只显示赋值、调用、减量。。。可以用作语句。我真的不知道为什么这是非法的——我试着在public partial类下声明一个2D int数组,并在frmSudoku中以类似的方式初始化它,结果很好。标签数组的不同之处是什么


编辑:2D int数组工作不正常,只是花了一段时间红色下划线才显示oops

这不是2D数组独有的。使用中的术语,数组初始值设定项仅在数组创建表达式、字段声明或局部变量声明中有效

例如,这是有效的:

// array-initializer as part of a local variable declaration
string[] strings = { "x", "y" };
但这不是:

string[] strings;
// This is just an assignment expression, not part of a variable declaration
strings = { "x", "y" };
您可以使用*数组创建表达式,但:

string[] strings;
strings = new string[] { "x", "y" };
等效项适用于您的二维示例:

board = new Label[,] {{ ... }};

这不是二维阵列所独有的。使用中的术语,数组初始值设定项仅在数组创建表达式、字段声明或局部变量声明中有效

例如,这是有效的:

// array-initializer as part of a local variable declaration
string[] strings = { "x", "y" };
但这不是:

string[] strings;
// This is just an assignment expression, not part of a variable declaration
strings = { "x", "y" };
您可以使用*数组创建表达式,但:

string[] strings;
strings = new string[] { "x", "y" };
等效项适用于您的二维示例:

board = new Label[,] {{ ... }};

我对数组的处理不够充分,不能肯定这一点,但我相信这可能是因为你试图用{}而不是'sI'来初始化变量。我对数组的处理不够充分,不能肯定这一点,但我相信这可能是因为你试图用{}而不是's来初始化变量