我们知道,类中的方法就是用来“执行功能”的。在执行过程中,难免会用到数据或产生结果。所以,一般方法都有参数列表和返回值。当需要多个不同类型且数量固定的返回值时,我们就可以用out关键字,将结果返回给用的方。需要指出的事在原方法和调用方法中都要显示使用out关键字,在原方法中out应初始化,在调用方法中则不需要。如:
       //原方法
        int Method1(out int i, out int j)
        {
            i = 10; j = 20;
            return i + j;
        }
        //调用方法
        void Method2()
        {
            int i, j;
            int k = Method1(out i, out j);
            Console.WriteLine("{0} + {1} = {2}", i, j, k);
        }
        //结果是输出:10+20=30
与out相近的还有ref,ref是用来强制使参数按照“引用”来传递值的。当控制权返回到调用方法时,在原方法中任何对参数的更改都能反映到该变量中。同样,在原方法和调用方法中都要显示使用ref关键字,与out不同的是在调用方法中ref应初始化。如:
       //原方法
        int Method1(ref int i, ref int j)
        {
            i = 10; j = 20;
            return i + j;
        }
        //调用方法
        void Method2()
        {
            int i = 0, j = 0;
            int k = Method1(ref i, ref j);
            Console.WriteLine("{0} + {1} = {2}", i, j, k);
        }
      //结果是输出:10+20=30
其实,ref与out的以上区别,只在运行时才不同。在编译时,他们采用相同的处理方式。所以,上述的两个“Method1”是不可以重载的。因为,从编译的角度来看,上述的两个方法是完全相同的。所以,
  int Method1(out int i, out int j)
  int Method1(ref int i, ref int j)是不可重载的。
但是可以与  int Method1(int i, int j) 重载。