Ami*_*mit 2 .net c# memory-management object
我可以在堆栈中创建关于.net和C#的类对象吗?例如:
class abc { int i=1; }
abc a1=new abc();
Run Code Online (Sandbox Code Playgroud)
现在,这里的对象是在堆中创建的.那么,如果对象的大小不大,有没有办法在ram的堆栈内存中创建对象?
.NET引用类型始终存在于GC堆上.它不可能在别处.甚至可以支持C++/CLI的东西
System::Random rnd;
rnd.Next();
Run Code Online (Sandbox Code Playgroud)
看起来像堆栈变量,实际上是Random
在GC堆上创建类(Dispose
如果它实现的话,在块的末尾调用它的方法IDisposable
.)
也就是说,正如Eric Lippert所说,堆栈是一个实现细节,您应该主要关注您创建的类型的引用或值语义.