【问题标题】:what happens when value types are defined inside reference types在引用类型中定义值类型时会发生什么
【发布时间】:2014-02-17 13:41:32
【问题描述】:

大家好,我有几个问题

1)

class ClassName 
{
    public int[] a = new int[100];
}

创建此类对象时会发生什么我的意思是整数数组存储在哪里,堆栈[值类型]或堆[引用类型]

我很困惑,因为规格值类型存储在堆栈上,然后数组将存储在堆栈上。

但是引用类型是按照规范在堆上创建的

请大家帮我理解这一点。我不想在不知道幕后发生的情况下编写代码

提前致谢

【问题讨论】:

  • 值类型不在堆栈上分配,它们是内联分配的。数组是引用类型,所以数组数据存放在堆上,而对它的引用存放在ClassName的实例中。
  • 重复的问题,但这是一个非常好的答案:stackoverflow.com/a/2561622/67038
  • @Lee where 将是“public int a =12;”存储在 ?
  • @Constantine - 它将作为包含结构/对象数据的一部分存储。

标签: c# .net managed-code


【解决方案1】:

这里没有值类型。所以这个问题没有实际意义。 ClassName 和 int[] 都是引用类型。

如果一个值类型被声明为一个自动本地,它被存储在堆栈中。如果它在另一种类型中声明,则它存储在另一种类型中。

值类型始终存储在堆栈中是 C# 中一个不朽的神话。

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 2021-01-25
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多