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();
}
}
以上代码输出结果: