You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引用类型中的值类型属性是否包含装箱值?传递时是否按值复制?

关于引用类型中值类型属性的装箱与传值问题

1. 引用类型中的值类型属性是否包含装箱值?

不会。引用类型实例存储在托管堆时,其值类型属性是直接以原始值的形式嵌入在实例的内存区域里的,不存在装箱后的对象。比如你定义的SomeClass里的intProperty,它就是普通的32位整数,和单独的int变量存储逻辑完全一致,没有装箱操作。

2. 代码执行时的具体行为

针对你给出的代码:

public class SomeClass
{
    public int intProperty { get; set; }
    ...
}

var obj = new SomeClass();
obj.intProperty = 1;

SomeMethod(obj.intProperty);

public void SomeMethod(int value) { ... }

执行SomeMethod(obj.intProperty)时:

  • 首先读取obj.intProperty的当前值(即1);
  • 由于SomeMethod的参数是值类型int,会把读取到的数值复制一份,将副本传入方法内部;
  • 方法内对参数value的任何修改都不会影响obj.intProperty的原始值,完全遵循值类型的传值行为。

内容的提问来源于stack exchange,提问作者Aleksandr Sheianov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:31:10