qqqqqqq
qqqqqqq

Reputation: 2227

How to modify the boxed value without creating a new object in C#?

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

Answers (1)

Holger
Holger

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

Related Questions