1、out参数修饰符
如果你在一个方法中 ,返回多个相同类型的值的时候,可以考虑返回一个数组。当有多种类型的返回值时,用到out参数
比如:用户登录时需要返回布尔类型的值来判断用户密码是否正确之外还需要提示用户登录成功与否信息。此时,除了返回布尔类型值,还需要返回string类型值
public static bool Login(string name,string pwd,out string msg)
{
if(name=="123"&&pwd=="321")
{
msg="登录成功";
return true;
}
else
{
msg="密码错误";
return fals;
}
}
1、out参数要求在离开方法内部以前必须赋值
2、 方法的参数使用out修饰时,调用该方法时也要加上out关键字
3、 out关键字会导致参数通过引用来传递。这与 ref关键字类似,不同之处在于 ref要求变量必须在传递之前进行初始化。
2、ref参数
变量作为参数传给方法,同时希望在方法执行完成后,对参数所做的修改能够反映到变量上 带入方法中的参数加上ref在方法结束后会自动将修改的后的参数 值保存为最新的值
int num=12;
public void add(ref int num)
{
++num;
}
add(num);
1、ref (全拼:reference):强制要求参数按引用传值。
2、传入参数之前,必须给参数赋值。
3、调用方法时,必须加 ref 关键字。
4、 值类型,它所创建的实例不在托管堆中分配内存,而是直接存储在变量中
3、params参数
将给的数值自动匹配为可变数组的数组长度值,如果有多个数值,并且有多个参数时且包括要返回的可变数组的参数时,需要将可变数组放在最后一个参数的位置
public static void test(string name,int age,params int[] score)
{
int sum;
for(int i=0,i<score.length,i++)
{
sum+=score[i];
}
console.writeline("总分为"+sum);
}
test("小明",18,90,40,60,77);
这样匹配的数组中的值为(90,40,60,77)。
如果把score,age两个参数位置互换的话,代码会报错
1、使用 params 关键字可以指定采用数目可变的参数的params。 参数类型必须是一维数组。
2、在方法声明中的 params 关键字之后不允许有任何其他参数,并且在方法声明中只允许有一个 params 关键字。
3、 不允许params修饰符与ref和out修饰符组合起来使用
in 修饰符
通过引用传递参数。 它让形参成为实参的别名,即对形参执行的任何操作都是对实参执行的。 它类似于 ref 或 out 关键字,不同之处在于 in 参数无法通过调用的方法进行修改。
ref 修饰符,指定参数由引用传递,可以由调用方法读取或写入。
out 修饰符,指定参数由引用传递,必须由调用方法写入。
in 修饰符,指定参数由引用传递,可以由调用方法读取,但不可以写入。