引用自百度知道
第一个:
static void Main(string[] args) { int x = 0; GetVal(x); Console.WriteLine(x); //x=0,很遗憾,传递的是值类型,x的值没有变化 GetRefVal(ref x); Console.WriteLine(x); //x=10, x的值已经改变啦 Console.ReadLine(); } private static void GetVal(int x)//这里只是单纯的复制x=0这个变量.传说中的传值 { x = 10; } private static void GetRefVal(ref int x)//参数x是1个指向堆栈中值类型为int的指针 //传说中的传址 { x = 10; }
第二个:
在C#中,你给一个方法传输参数时,实际上是使用的这个参数的一个副本,就是将原来的变量复制一份,然后传给一个方法,让其进行操作。所以在方法内部对参数的修改等不会对原来的参数造成影响。但是有些时候,又需要这种影响。ref的作用就是这个。它将变量本身而不是副本传给方法,所以对参数的修改原来变量的值。