static void Main(string[] args) { //----------------------out int i;//不需要初始化 int n; Console.WriteLine(outTest(out i,1,out n)); //---------------------ref int j=1;//error ref要初始化 Console.WriteLine( refTest(ref j,1)); //----------------------------普通方法 //这里不帮你输入的是什么都会输出100 //看到这里才能体现ref跟out的价值 Console.WriteLine(Test(100000)); } public static int outTest(out int i,int h,out int n) { i = 1; //h = 100; //在方法体内必须给out参数分配值 n = 0; return h + i; } public static int refTest(ref int j,int k) { k = 100; return k + j; } public static int Test(int p) { return p = 100; } 看完上面了,来总结一下!! 1.使用re传参数的时候,必须初始化,而使用out必须在方法体内对其初始化 2.调用的时候必须加上,ref/out关键字 3.out多用在多个return,ref多用到修改调用者引用的地方