C#笔记[ 十 ]:参数的传递
Evernote Export
.................................. 参数的传递 ...................................
|
|
原理
|
形参
|
实参
|
|
传值参数
|
传递的是实参的副本,值不会改变
所以一般用return返回加工后的值
|
变量
|
可以是变量,也可以是具体的值,
变量使用前必须赋值
|
|
传引用参数
|
传递的是实参的地址,值会改变
所以不用 return
|
引用参数:ref + 变量名 |
必须是 ref + 变量,
变量使用前必须赋值
|
|
传输出参数
|
传递的是实参的地址,值会改变
所以不用 return
|
输出参数:out + 变量名
|
必须是 out + 变量,
变量使用前无需赋值,在方法中赋值
|
|
默认参数
|
|
放在形参最右边赋默认值
|
可以不用传值 (int a,int b=4)
|
|
传可变数组参数
|
传递一维数组的地址,值会改变
|
params XXX[] 数组名
|
可以不传值,可以传一维数组名,可以传一维数组元素
|
1.传值参数:
classRefClass
{
publicvoidJudge(int num)
{
num = num + 5;
}
}
RefClass refclass = newRefClass();
int num = 5;
refclass.Judge(5); // refclass.Judge(num);
Console.WriteLine("输出:" + num); // 5
2.传引用参数
classRefClass
{
publicvoidJudge(int num,refint num2)
{
num = num + 5;
num2 = num2 + 5;
}
}
RefClass refclass = newRefClass();
int num = 5;
int num2 = 5;
refclass.Judge(num,ref num2);
Console.WriteLine("num:" + num + " " +"num2:" + num2); // num:5 num2:10
3.传输出参数
classRefClass
{
publicvoidJudge(int num,outint num2)
{
num = num + 5;
num2 = 5; // 变量在方法中必须赋值再使用
num2 = num2 + 5;
}
}
RefClass refclass = newRefClass();
int num = 5;
int num2; // 变量在调用之前不需要赋值,
refclass.Judge(num,out num2);
Console.WriteLine("num:" + num + " " + "num2:" + num2);
4.默认参数:默认值的参数必须放在最右边
原理:有默认值的参数放在最右边,调用方法的时候才能省略参数
publicvoidMethod(int a,int b=3)
{
MessageBox.Show("Hello!");
}
Method(3);
5.传可变数组参数:默认值的参数必须放在最右边,一维数组的元素个数不确定
params只能用来修饰一维数组,可有,可无,可数组元素
publicstaticvoidparam(paramsint[] arr)
{
foreach (var item in arr)
{
Console.WriteLine(item);
}
}
//声明一个一维数组
int[] arr = newint[4];
for (int i = 0; i < arr.Length; i++)
{
arr[i] = i;
}
param(arr); // 可有
param(); // 可无
param(1,2,3,4); // 可数组元素
Console.ReadKey();

浙公网安备 33010602011771号