结构体可用于垃圾收集吗?

tes*_*ing 1 c# garbage-collection c#-3.0 c#-4.0

struct a
{
   public string str;
}

a bb = new a();
Run Code Online (Sandbox Code Playgroud)
class a
{
   public string str;
}

a bb = new a();
Run Code Online (Sandbox Code Playgroud)

类总是被垃圾回收的说法正确吗?结构是否(永远)保存在内存中?

Til*_*lak 5

编辑-> 回答更新了以下评论讨论以及 Rob 共享的链接

struct值类型。通常不会在堆上为它们分配单独的内存。通常不需要垃圾收集。

但也有例外。不保证内存分配为值类型分配堆栈或为引用类型分配堆。阅读其他 SO 问题答案实施细节中的堆栈以获取详细信息。

如果有一些引用类型作为成员变量,那么一旦超出范围并且引用类型没有更多可访问的根,该引用类型struct将被垃圾收集(在下一个垃圾收集触发器中) 。struct

如果您的示例已用作引用string类型。使用实习生池进行不同的处理。String

  • 那么,如果我有一个“struct”数组,那么它分配在哪里? (3认同)