标签:
在C#中,你给一个方法传输值类型参数时,实际上是使用的这个参数的一个副本,就是将原来的变量复制一份,然后传给一个方法,让其进行操作。所以在方法内部对参数的修改等不会对原来的参数造成影响(这个其实就是值类型和引用类型的区别)。但是有些时候,又需要这种影响。ref的作用就是这个。它将变量本身而不是副本传给方法,所以对参数的修改原来变量的值。ref需要在传入前赋值,out不需要。ref不需要关心函数体中发生了什么,函数体对ref透明。而out却不是,在函数体中不能将没有赋值的out参数赋值给其他成员,在函数退出前必须对out参数赋值。
class Program{
static void Main(string[] args) { int x = 8; MM(x); Console.WriteLine(x); MMM(ref x); Console.WriteLine(x); } static void MM(int x) { x = 10; } static void MMM(ref int x) { x = 10; } }
标签:
原文地址:http://www.cnblogs.com/772933011qq/p/4578512.html