A function member implemented in a value-type can be invoked through a boxed instance of that value-type in the following situations:
override
of a method inherited from type object
and is invoked through an instance expression of type object
.In these situations, the boxed instance is considered to contain a variable of the value-type, and this variable becomes the variable referenced by this
within the function member invocation. This in particular means that when a function member is invoked on a boxed instance, it is possible for the function member to modify the value contained in the boxed instance.