结构,堆和堆栈

我一直在阅读一本关于C#的书,并且遇到了在内存中存储值的主题。 一个引用类型的实例总是在堆上创建,但是一个变量的值将在其声明的任何地方生存。 只有局部变量(在方法[非匿名]中声明的变量)和方法参数存在于堆栈中。

所以我的问题是 - 如果我将这些结构声明为这样的局部变量 - 它们会全部放在栈上吗?

struct A<T> where T : struct { }

struct B<T> where T : class { }

struct C { }

我只是想知道一个struct的内容是否会影响它将被存储在内存中的位置。

谢谢,C#大师!


结构走到你告诉他们去的地方。

如果它们在函数中声明为局部变量,则它们在堆栈中。 如果他们是班级成员,那么他们内联在班级的堆内存中。

如果一个结构体包含一个类,那么这个引用就像是一个int或任何其他成员一样在结构体中被内联。 类参考指向的东西在堆上

链接地址: http://www.djcxy.com/p/79089.html

上一篇: Structs, heaps, and stacks

下一篇: Java variable placed on stack or heap