Dear Viorel,
If you use class instead of struct, or use functions instead of properties, then it works
Can you put forth any possible semi-reasonable explanation, why this would make sense: to require the use of functions or to declare a class rather than a struct to be able to modify fields, without actually preventing their modification? And why would a struct require the use of more code to achieve the same in compare to a class? Or why would "using" which is designed to implement try/finally/Dispose(), meddle with write access modifiers on a struct, but not on a class?
This looks like a quick patch on the compiler level, to fix a designer bug in the specific struct type implementation of the .NET framework. It makes no sense for the language as such. And here is the reason for the use of struct over classes: because they don't allocate memory on the GC on heap on their own. On one side, there are a bunch of classes, like Span<T>, t avoid the need for memory allocation and on the other side, it is encouraged (by requiring classes over structs?)
Atmapuri