摘要:
前一篇我们浅谈了“堆”和“栈”,这篇文章我们主要谈一下值类型和引用类型在作为参数传递时候,有什么不同。主要分为两种情况:1.传递值类型(Passing Value Types)2.传递引用类型(Passing Reference Types)首先我们来看一下第一种情况,传递值类型(Passing Value Types):public void Go(){ var x = 5; AddFive(x); Console.WriteLine(x.ToString());}public int AddFive(int pValue){ pValue += 5; ... 阅读全文
摘要:
首先,让我们来简单了解一下什么是“栈”(stack),什么是“堆”(heap)。“栈”其实就是一种后入先出(LIFO)的数据结构。在我们.NET Framework里面,由CLR负责管理,我们程序员不用去担心垃圾回收的问题;每一个线程都有自己的专属的“栈”。“堆”的存放就要零散一些,并且由 Garbage Collector(GC)执行管理,我们关注的垃圾回收部分,就是在“堆”上的垃圾回收;其次就是整个进程共用一个“堆”。我们先来记住两条黄金法则:1.引用类型总是被分配到“堆”上。2.值类型总是分配到它声明的地方: a.作为引用类型的成员变量分配到“堆”上 b.作为方法的局部变量时分配到“栈” 阅读全文