c# 参数传递

c#类型有值类型与引用类型.

无论哪种类型的变量,作为方法的参数进行传递时,默认是以"值传递"方式来传递的.

传递给方法的形参,在执行时都会新创建一个局部变量,然后接受实参的值,

而这个值可以是一个基本类型,也可以是一个引用.

   

所以值类型的形参,作用域仅在函数内部,执行完就消失了.

引用类型的形参,方法内部的局部变量指向堆上的一个对象,

调用完之后,局部变量也会消失,但是如果修改这个引用的值,

会保留在堆上.

但是如果你在方法内部给这个局部变量new一个新值,

则就是又在堆上分配一个新的对象,这个变量指向这个对象.

和原来传递过来的就没有关系了.

但是在方法执行完之后,这个局部变量就会消灭,然后堆上的对象就没有变量

引用它,它也会纳入GC回收的范围.

   

那么我如何查看这些变化呢?如何验证我说的这些话呢?

使用clrprofiler, 但不太理解其中的内容.

   

   

   

posted on 2014-06-05 10:03  tneduts  阅读(150)  评论(0编辑  收藏  举报

导航