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
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.
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.
That's because your assignment is actually transformed by the compiler to be done in the default constructor. But C# struct
s don't have default constructors, as you can see in the link posted by Kent Boogaart.
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#.