The problem you are facing has nothing to do with using a struct as the array type. Your syntax would also be invalid if you would use a class.
This works:
MyStruct [] myTable = new MyStruct []
{
new MyStruct { i = 0, j = 0 },
new MyStruct { i = 1, j = 1 },
new MyStruct { i = 2, j = 2 }
};
You have to use collection initializers together with object initializers.
As collection initializers and object initializers are just syntactic sugar, this is equivalent to
MyStruct [] myTable = new MyStruct[3];
var tmp = new MyStruct();
tmp.i = 0;
tmp.j = 0;
myTable[0] = tmp;
// and so on...
What you really want with an array of structs is this:
MyStruct [] myTable = new MyStruct[3];
myTable[0].i = 0;
myTable[0].j = 0;
// and so on...
But this can't be achieved using the short hand initializer syntax.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…