class Program { //使用out后必须对变量赋值 public void TestOut(out int x, out int y) { x = 1; y = 2; } //此时传进来的值分别为x1:10,y1:11,输出之后的x1的值为2 public void TestRef(ref int x, ref int y) { //引用剪剪那句话传进来的是猪,出来的可能是头牛(很精辟!) x = 2; //这边可以不对y赋值,而out那就不行了. } static void Main(string[] args) { int x=10; int y=11; Program P1 = new Program(); P1.TestOut(out x, out y); //out会清空原来变量的值 Console.WriteLine("x={0},y={1}", x, y); //在使用之前ref必须对变量赋值 int x1 = 10; int Y1 = 11; P1.TestRef(ref x1, ref Y1); Console.WriteLine("x1={0},y1={1}", x1, Y1); Console.ReadKey(); } //el可以把参数的数值传递进函数, //但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空, //所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,rel是有进有出,out是只出不进。 }