“值类型存储在栈中, 引用类型存储在堆中”
这句话的前半句是有争议的,
“变量的值是在它声明的位置存储的,假如一个类中有一个int类型的实例变量,那么在这个类的任何对象中,该变量的值总是和对象中的其他数据在一起,也就是在堆上,只有局部变量(方法内部声明的变量)和方法参数在栈上。而对于C#2以及更高版本,很多局部变量并不完全存放在栈中”引用-《C# in depth》及译本《深入理解C#》
值类型存储在栈中, 引用类型存储在堆中. 这与静态与否没关系, 静态与否只影响对象的初始化.
public static struct Student
{
public string Name {get; set;}
}
// main method
Student stu = new Student();
stu.Name = "Hello World";
其实和class看起来差不多.
结构体属于值类型,存储栈中