C#的值类型,引用类型,栈,堆,ref,out

要点:

引用类型分两段存储,一是在托管堆里的值(实例对象),二是持有它的引用的变量。对于局部变量(参数)来说,这个引用就在栈里,而作为类型的字段变量的话,引用会跟随这个对象。

值类型的值是在它声明的位置存储的。即局部变量(参数)的值会在栈里,作为类型成员的话,会跟随对象。

对于运行时来说,ref和out是一样,它们的区别是C#编译器对它们的区别,ref要求初始化好,out没有要求。因为out没有要求初始化,所以被调用的方法不能读取out参数,且方法返回前必须赋值。

参考 http://www.cnblogs.com/lemontea/p/3159282.html

原文地址:https://www.cnblogs.com/sherlock99/p/3497300.html