c# - 实例中的值类型在哪里

标签 c# oop heap-memory stack-memory

<分区>

众所周知,值类型是存储在栈中的。现在考虑一下:

class test
{
    public int Sum { get; set; }
    public string Name { get; set; }
}

然后创建一个实例如下:

test t = new test();
t.Sum = 10;
t.Name = "a string";

现在,实例及其属性将如何存储在堆中? 因为我们有一个 int 应该存储在堆栈中。

最佳答案

As we know value types are stored in stack.

更好的表达方式是“值类型可以存储在堆栈中”。实际放置取决于上下文。

只有当您将这些对象创建为局部变量时,值类型的对象才会存储在堆栈中。当您使值类型对象成为其他对象的一部分时,值类型对象将成为其“所有者”对象的一部分。根据所有者对象类型,如果 test 被声明为 struct,则值类型对象将放置在动态内存中,如您的示例或堆栈中.

关于c# - 实例中的值类型在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31502705/

相关文章:

Java:在没有引用的情况下在堆中创建对象的目的是什么

rust - 什么特征阻止参数包含指向堆分配的数据的指针?

java - Used vs Max vs Size -Jvisualvm?

c# - 为什么我应该使用 methodinvoker 而不是声明一个 void 方法并调用它?

c# - 通过 "Show Desktop"/Win+D 保持窗口可见

c# - 如何设置一个像素宽度的网格线(WPF DataGrid)?

python - "classes themselves are objects"是什么意思?

c# - 将空格字符模型绑定(bind)到 char 属性

Javascript OOP,获取父变量值

c++ - 如何在不修改类声明的情况下在创建后正确填充对象?