C# Struct 和Class 区别

Class

  • 引用
  • 可以为null
  • 实例化在堆上
  • 构造函数可以无参数
  • 必须new来实例化

Struct

  • 值类型
  • 不能为null
  • 实例化在栈上
  • 构造函数必须有参数
  • 可new ,可不new 来实例化

  • 程序运行期间动态分配的空间
  • 无序的,是一片不连续的内存域,要用户自己来控制和释放(GC)

  • 编译期间分配好的内存空间,因此要在代码中明确定义栈的大小
  • 要管存储顺序,保持先进后出的原则,是一片连续的内存域,有系统自动分配和维护