1 值传递
函数定义时可以设默认值,调用函数时不传参数则函数内部使用默认值,设置默认值的参数必须放在末尾
值传递还有可变参数的传递 关键字 params
2 引用传递 ref关键字
函数定义时不能设默认值
3 输出传递 out关键字
函数定义时不能设默认值
注意:使用out关键字传递的参数需要在函数内部初始化
/// <summary> /// C#参数传递方式 /// </summary> class Program { static void Main(string[] args) { int a = 0; TestValue(a); Console.WriteLine("**值传递*输出 a={0}", a); a = 0; TestRef(ref a); Console.WriteLine("引用传递*输出 a={0}", a); a = 0; TestOut(out a); Console.WriteLine("输出传递*输出 a={0}", a); //可变参数的两种传参方式 TestParams(a, 1, 2, 3, 1); int[] b = new int[] { 5,6,8,9}; TestParams(b); } /// <summary> /// 1值传递 /// </summary> static void TestValue(int a,int b=6) { Console.WriteLine("**值传递*输入 a={0}", a); a = 10+b; } /// <summary> /// 引用传递 /// </summary> static void TestRef(ref int a) { Console.WriteLine("引用传递*输入 a={0}", a); a = 10; } /// <summary> /// 输出传递 /// </summary> static void TestOut(out int a) { //参数处于未赋值的状态,必须在函数内部初始化 //Console.WriteLine("输出传递*输入 a={0}", a); a = 10; } /// <summary> /// 可变参数 /// </summary> /// <param name="a">可以传递一个数组,也可以传递单独的数组元素</param> static void TestParams(params int[] a) { foreach (var item in a) { Console.Write(item + " "); } Console.WriteLine(); } }
以上代码输出结果: