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();
 
 
 

 
 
 
 
 
 
posted @ 2021-03-14 14:42  大李子"  阅读(126)  评论(0)    收藏  举报