代码之家  ›  专栏  ›  技术社区  ›  Hemanshu Bhojak

引用类型(堆或堆栈)中定义的值类型存储在哪里?

  •  2
  • Hemanshu Bhojak  · 技术社区  · 14 年前

    在引用类型中定义的值类型是存储在堆上还是堆栈上?

    1. 如果存储在堆上,那么值类型何时存储在堆栈上?
    3 回复  |  直到 14 年前
        2
  •  4
  •   Gabe Timothy Khouri    14 年前

    堆栈上存储的唯一变量是函数的局部变量。对于引用类型,引用存储在堆栈上,而它引用的对象存储在堆上。对于值类型,对象本身存储在堆栈上。请注意,可以从局部函数转义的局部变量(例如通过闭包)存储在堆上的单独数据结构中,包括可能包含的任何值类型。

    换句话说,由于引用类型总是存储在堆上,所以它们包含的任何内容(甚至值类型)也存储在堆上。

        3
  •  1
  •   deostroll    14 年前

    引用自 here :

    包括引用类型变量 引用类型变量只是 它自己。方法参数计为 局部变量也是,但如果它们是 呼叫代码

    我猜是这样的 TextBox txtbx = new TextBox(); 意味着变量txtbx存在于堆栈中,但其值通常是对堆中对象的引用。

    引用类型的实例变量总是在堆上。这就是物体本身“存在”的地方。

    推荐文章