I am surprised that I can't initialize my fields in structs, why is it like that? Like:
struct MyStruct
{
private int a = 90;
}
but it's a complie time error. I don't know why it's a problem? Please explain this to me.
I am surprised that I can't initialize my fields in structs, why is it like that? Like:
struct MyStruct
{
private int a = 90;
}
but it's a complie time error. I don't know why it's a problem? Please explain this to me.
In C#, a struct
cannot declare a default constructor.
The compiler moves the initialization statements to the constructor, which can't happen with a struct
in C#.
The reason is mainly performance. Consider the following,
var a = new MyStruct[1000];
If C# allowed initialization of fields in a struct then the initialization would have to be performed 1000 times, once for each element in the array. C# wanted to avoid such kinds of implicit behavior as might be found in other languages.
It's for performance. When you new up a struct with the default constructor, all it does is allocate however many bytes on the stack and initialises them to 0.