今天来捋一捋值类型和引用类型各是在哪里存储的,堆?还是栈?
首先值类型和引用类型,是C#中变量的两种类型。值类型包括我们常用的整型、浮点型、布尔型数值、枚举等。引用类型包括类、接口、数组、委托等。
至于堆和栈,是两种不同的内存区域,堆(heap),栈(即堆栈(stack))。
简单来说,值类型和引用类型变量本身在栈中分配内存,引用类型的实例在堆中分配内存。(要注意的是,一定要理解清楚引用类型变量本身和引用类型的实例的区别,引用类型变量好比一个指针,它所指向的内容即引用类型的实例)。有时候又会看到一些说法,值类型在其所定义的位置分配内存,这让人感到很混乱却也不得不在意,下面简单捋一下。
如下面代码:
public class TestClass
{
int a = 0;
}
public void Function()
{
int b = 0;
TestClass class1 = new TestClass();
}
方法Function中定义的值类型(整型b)在栈中分配,引用类型(类