c# - 堆栈中的对象创建

标签 c# .net memory-management object

关于 .net 和 C#,我可以在堆栈中创建我的类的对象吗? 例如:

class abc { int i=1; } 
abc a1=new abc(); 

现在,这里的对象是在堆中创建的。那么,如果对象的大小不大,有没有办法在ram的栈内存中创建对象呢?

最佳答案

.NET 引用类型始终存在于 GC 堆中。别处不可能有它们。即使是 C++/CLI 也支持类似的东西

System::Random rnd;
rnd.Next();

看起来像堆栈变量,实际上在 GC 堆上创建了 Random 类(如果它实现了 IDisposable.)

也就是说,正如 Eric Lippert 所说,the stack is an implementation detail并且您应该主要关心您创建的类型的引用或值语义。

关于c# - 堆栈中的对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194582/

相关文章:

C#使用递归字典存储xml有什么缺点

c# - 使用存储 C#.Net CNG 中的 key 的 ECDSA 签名文件

.net - WPF 或 Windows 窗体

c++ - 单例析构函数

c++ - 在混合 C/C++ 程序中协调 malloc 和 new 的 "correct"方法是什么?

c# - 在一个 ASP.NET MVC 5 解决方案中拥有单独的项目

c# - 通知 WPF DataGrid 更改

c# - 检索 SQL Server 中表的 DataTable 信息

c# - 只允许在构造函数中设置值的设置访问器的名称是什么?

c++ - C++中从虚析构函数调用虚方法