Look at those remarks. Value types. Naughty boys!
If you have a property of type Point, for example, and you invoke the Offset to modify the X / Y members, you soon will realize that the original value isn’t modified. Here is why 😛
Note that calling the Offset method will only have an effect if you can change the X and Y properties directly. Because Point is a value type, if you reference a Point object by using a property or indexer, you get a copy of the object, not a reference to the object. If you attempt to change X or Y on a property or indexer reference, a compiler error occurs. Similarly, calling Offset on the property or indexer will not change the underlying object. If you want to change the value of a Point that is referenced as a property or indexer, create a new Point, modify its fields, and then assign the Point back to the property or indexer.