class Program { static void Main(string[] args) { //普通 : int k1 = 1; int result1 = Test1(k1, 2); Console.WriteLine("/*普通:*/"); Console.WriteLine(result1); Console.WriteLine(k1); //ref : //用法: 参数要用 ref 一起传递,并且是可以赋值的变量,ref 变量要先赋值 int k2 = 1; int result2 = Test2(ref k2, 2); Console.WriteLine("/*ref:*/"); Console.WriteLine(result2); Console.WriteLine(k2); //out : //用法: 参数要用 out 一起传递,并且是可以赋值的变量,out 变量不用先赋值(只定义即可) int k3; Console.WriteLine("/*out:*/"); int result3 = Test3(out k3, 2); Console.WriteLine(result3); Console.WriteLine(k3); } /// <summary> /// 普通 /// </summary> public static int Test1(int k, int p) { k++; return k + p; } /// <summary> /// ref /// </summary> public static int Test2(ref int k, int p) { k++; return k + p; } /// <summary> /// out /// </summary> public static int Test3(out int k, int p) { //out 未赋值的变量不能使用,所以在方法内部赋值。 k = 1 + 1; return k + p; } }
运行结果: