一个C#引用函数的问题!
今天试了个简单的程序: 
 class   MainProg 
 { 
 		public   static   void   Main() 
 		{ 
 			MainProg   man   =   new   MainProg(); 
 			int   x=   1; 
 			System.Console.WriteLine( "x的初始值是:{0} ",x); 
 			man.AddFive(x); 
 			System.Console.WriteLine( "After   AddFive:{0} ",x); 
 			man.AddFiveRef(ref   x); 
 			System.Console.WriteLine( "After   AddFiveRef:{0} ",x); 
 			man.AddFiveOut(out   x); 
 			System.Console.WriteLine( "After   AddFiveOut:{0} ",x); 
 		} 
 		public   void   AddFive(int   i) 
 		{ 
 			i+=5; 
 		} 
 		public   void   AddFiveRef(ref   int   i) 
 		{ 
 			i+=   5; 
 		} 
 		public   void   AddFiveOut(out   int   i) 
 		{ 
 			i=   5; 
 		} 
 }     
 运行结果为什么是这样的: 
 ----------   Run   C#   Inside   ---------- 
 x的初始值是:1 
 After   AddFive:1 
 After   AddFiveRef:6 
 After   AddFiveOut:5   
 输出完成   (耗时:   2   秒)   -   正常终止     
 为什么After   AddFiveRef后的值是6而不是2?
------解决方案--------------------因为传入man.AddFive(x);的x,在函数中修改后,是不能反映到外层函数的。在AddFiveRef(ref x)后,x的值被函数修改后,反映到调用层。 
 当一个值类型的参数传入函数后,怎么修改都不会影响调用层的。out的修饰符也差不多。 
 建议细读一下msdn的相关描述。 
 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b8a5e59c-907d-4065-b41d-95bf4273c0bd.htm   
 说一下: 
 int i=0; 
 AddFive(i); 
 // 这是i=0   
 AddFiveRef(ref i); 
 // i=函数付的值 
 // i=888888;   
 // 无论这个函数怎么复制,调用后i还是原来值。 
 public void AddFive(int i) 
 { 
 i=99999999; 
 }   
 public void AddFiveRef(ref int i) 
 { 
 i=888888; 
 }