c#程序是一组类型声明。
类型是一种模板
类型有哪些元素:名称(int);数据结构(Bytes);行为(16位整数)
栈和堆
栈:是一组内存数组。只能从栈的顶端插入或删除数据。插入数据为入栈(push),删除数据为出栈(pop)。后进先出的数据结构。
堆:是一块内存区域。堆里的内存可以任意顺序插入或删除。堆里的数据通过CLR中的GC删除。
注:
GC过程:
a.在堆里保存了三个对象。
b.其中一个对象不再被程序使用。
c.GC发现此对象并释放它。
d.被释放的对象内存可以被重用。
值类型和引用类型
值类型和引用类型的对象在内存中存储方式不同。
值类型:只需要一段单独的内存。用于存储实际数据。
引用类型:需要二段内存。第一段存储实际数据。它总是存放在堆中。第二段是一个指向数据在堆中存储位置的引用。
数据不是其他类型的成员:
值类型:数据存放在栈中。
引用类型:数据放在堆中,引用放在栈中。
数据是其他类型的成员:
引用类型对象数据始终存放在堆中。
值类型对象或引用类型的引用部分按照实际环境存放在堆中或栈中。
变量:是一个名称,表示程序执行时存储在内存中数据。