如何在 C# 中修改装箱值而不创建新对象?
例如。如果我有object o = 5;
我想改变盒装的值5
to 6
, 我怎样才能做到这一点?
The o = 6;
将在堆上创建一个新对象并将对该对象的引用分配给o
。还有其他方法可以更改盒装值吗?
你可以自己“拳击”,而不是修改它。
class Box
{
public int Value { get;set;}
}
这会阻止自动装箱。
如果您自己定义一个转换运算符
public static Box operator(int value) => new Box() { Value = value }
您可以保留与上面相同的语法。但如您所见,此语法将创建一个新对象。要修改对象,您必须
Box b = 5;
object o = b;
((Box)o).Value = 6;
// or
b.Value = 6;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)