Hide parameterless constructor on struct

No, you can’t do this. As you said, similar question has been asked before – and I thought the answer was fairly clear that you couldn’t do it.

You can create a private parameterless constructor for a struct, but not in C#. However, even if you do that it doesn’t really help – because you can easily work around it:

MyStruct[] tmp = new MyStruct[1];
MyStruct gotcha = tmp[0];

That will be the default value of MyStruct – the “all zeroes” value – without ever calling a constructor.

You could easily add a Validate method to your struct and call that each time you received one as a parameter, admittedly.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)