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

C#类解构器是否会从内存中删除/销毁类实例?

解构器对C#类生命周期的影响

解构器完全不会影响类的生命周期——它就是个用来批量提取类成员值的语法糖,本质就是个普通方法调用,没那么多“特殊能力”。

  • 解构的核心逻辑就是把类实例里的字段/属性值,复制到你定义的外部变量里,仅此而已。执行解构时,只是读取原实例的成员数据:值类型直接复制值,引用类型复制引用,不会对原实例做任何销毁、移除引用的操作。
  • 类实例什么时候被回收,完全由.NET的垃圾回收器(GC)说了算:只有当没有任何活跃的引用指向这个实例时,GC才会在合适的时机把它回收掉。解构操作既不会主动移除现有引用,也不会强制触发GC。

给你举个实际代码例子就懂了:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    // 解构方法
    public void Deconstruct(out string name, out int age)
    {
        name = Name;
        age = Age;
    }
}

// 使用解构器
var person = new Person { Name = "Alice", Age = 30 };
var (name, age) = person; // 这里只是把person的Name和Age读出来赋值给name、age
Console.WriteLine(person.Name); // 解构后person实例还好好的,照样能访问

你看,解构完之后person变量依然握着对实例的引用,实例根本不会被回收。只有等person变量超出作用域,或者被赋值成null,而且没有其他地方再引用这个实例时,GC才会考虑回收它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:22:02