.NET中的结构和类别有什么区别?

答案

在.net中,有两类类型,参考类型价值类型

结构是价值类型 和课程参考类型

一般的区别是参考类型 生活在堆上,一个值类型生活在线,也就是说,它是您的变量或字段的定义。

一个包含一个的变量值类型 包含整个值类型价值。对于结构,这意味着该变量包含整个结构以及其所有字段。

一个包含一个的变量参考类型 包含指针或参考到实际值所在的内存中的其他地方。

首先,这有一个好处:

  • 值类型总是包含一个值
  • 参考类型 可以包含一个无效的 - 参考,这意味着他们目前根本没有提及任何东西

在内部参考类型s被用作指针,知道这一点,并且知道可变分配的工作原理,还有其他行为模式:

  • 复制一个内容值类型变量为另一个变量,将整个内容复制到新变量中,从而使两个变量不同。换句话说,在副本之后,变为一个不会影响另一个
  • 复制一个内容参考类型 变量到另一个变量,复制参考,这意味着您现在有两个引用对同一的引用别的地方实际数据的存储。

当您声明变量或字段时,这是两种类型的不同之处:

  • 多变的:值类型 生活在堆上,参考类型 将其生活在堆栈上,作为指向实际记忆存在的堆里的某个地方的指针(尽管注意Eric Lipperts文章系列:堆栈是实现细节
  • 类/结构场:值类型 完全生活在类型中,参考类型将其生活在类型内部,作为指向实际记忆生活的堆内存中某个地方的指针。

来自: stackoverflow.com