堆栈中的对象创建

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的堆栈内存中创建对象?

Meh*_*ari 8

.NET引用类型始终存在于GC堆上.它不可能在别处.甚至可以支持C++/CLI的东西

System::Random rnd;
rnd.Next();
Run Code Online (Sandbox Code Playgroud)

看起来像堆栈变量,实际上是Random在GC堆上创建类(Dispose如果它实现的话,在块的末尾调用它的方法IDisposable.)

也就是说,正如Eric Lippert所说,堆栈是一个实现细节,您应该主要关注您创建的类型的引用或值语义.