C# list 成员对象是int型存在堆区还是栈区

在C#中,List<int>中的元素是直接存储在堆上的。这是因为List<T>是一个引用类型,当你创建一个List<int>实例时,它的容器本身(即列表的结构)存储在栈上,但是其元素(这里是int值)存储在托管堆上。

这是因为值类型如int与引用类型如List<int>的存储方式不同。值类型直接将其值存储在栈上(或者内联在其他对象中,如果它是另一个对象的一部分),而引用类型则仅将对象的引用存储在栈上,实际对象存储在托管堆上。

下面是一个简单的例子来说明这一点:

List<int> list = new List<int>();

list.Add(1); // int值1存储在托管堆上

在这个例子中,list变量本身是一个引用类型,它存储在栈上。但是,当你调用list.Add(1)时,实际的整数值1是作为一个值类型存储在托管堆上的。list包含指向这些整数的引用,而不是整数本身。

相关推荐
喵叔哟1 分钟前
10. 【Blazor全栈开发实战指南】--JavaScript调用Blazor
开发语言·javascript·windows·udp
佩奇大王3 分钟前
P1460 路径问题
java·开发语言
划水的code搬运工小李8 分钟前
Origin技巧(五)连接matlab控制台
开发语言·matlab
还是奇怪9 分钟前
Python第十课:异常捕获与测试入门
开发语言·python·异常捕获
自在极意功。11 分钟前
ArrayList扩容机制
java·开发语言·算法·集合·arraylist
吃鱼不吐刺.11 分钟前
Java线程池
java·开发语言
知无不研16 分钟前
constexpr关键字
开发语言·c++·constexpr
健康平安的活着17 分钟前
java8案例对list[过滤、分组,转换,查找等]清洗逻辑
java·数据结构·list
计算机安禾17 分钟前
【C语言程序设计】第26篇:变量的作用域与生命周期
c语言·开发语言·数据结构·算法·leetcode·visual studio code·visual studio
2401_8980751217 分钟前
C++中的智能指针详解
开发语言·c++·算法