Reputation: 2227
How to modify the boxed value without creating a new object in C#?
E.g. if I have object o = 5;
and I want to change the value of the boxed 5
to 6
, how can I do that?
The o = 6;
will create a new object on the heap and assign the reference to that object to the o
. Are there any other ways to change the boxed value?
Upvotes: 1
Views: 732
Reputation: 2652
You can do the "boxing" yourself, than you can modify it.
class Box
{
public int Value { get;set;}
}
This prevents the automatic boxing.
If you define yourself an conversion operator
public static Box operator(int value) => new Box() { Value = value }
You can keep the same syntax as above. But this syntax will create a new object as you see. To modify the object, you would have to
Box b = 5;
object o = b;
((Box)o).Value = 6;
// or
b.Value = 6;
Upvotes: 2