.NET结构概念问题

时间:2010-07-05 14:33:45

标签: .net constructor structure garbage-collection value-type

为什么构造函数在结构中不需要?

为什么GC不会删除结构?

2 个答案:

答案 0 :(得分:3)

Structure是一种值类型,因此不受GC管理。 结构可以声明构造函数,但它们必须使用参数。 结构体的副本由编译器自动创建和销毁,因此不需要默认构造函数

答案 1 :(得分:2)

结构是值类型, 这意味着,无论何时访问它或传递它,它的值都会被传递。 ( “复制”)

另一方面,类是引用类型。 如果你传递它,只传递它的引用(所以现在都使用相同的对象)

当您处理类及其实例作为引用时,GC必须检查是否已收集所有引用。 在值类型中不需要,因为它们只能有一个引用。 这意味着,如果收集了基础对象,则会自动收集这些对象。