why class's this is readonly?

.net, c#

Solution

`this` in a `class` refers to the reference; you cannot reassign your own reference, but you can assign fields etc of the current instance.

`this` in a `struct` refers to the value itself; when you assign `this`, just like when you assign to any value-type variable / parameter, it is copying all of the fields over the top (as a memory-copy). That is possible, but is frankly rare to see in the wild. Or, as with classes, you can assign each of the fields separately.

Problem

I tried to define a class. when I assign using ``` this = blah blah ``` the compiler reports "this is readonly" when I change the class to struct, it looks fine, any idea?

Original source