Why can't I initialize my fields in my structs?

前端 未结 4 1933
天命终不由人
天命终不由人 2020-12-21 02:40

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

相关标签:
4条回答
  • 2020-12-21 03:07

    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.

    0 讨论(0)
  • 2020-12-21 03:11

    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.

    0 讨论(0)
  • 2020-12-21 03:19

    That's because your assignment is actually transformed by the compiler to be done in the default constructor. But C# structs don't have default constructors, as you can see in the link posted by Kent Boogaart.

    0 讨论(0)
  • 2020-12-21 03:25

    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#.

    0 讨论(0)
提交回复
热议问题