c#中out、ref

442 阅读2分钟

一.out关键字的使用和注意事项

1.out关键字的定义

  1. 返回同个类型的值,我们可以返回一个数组来解决多个同类型返回值的需求
  2. 但是返回多个不同类型的值的时候,我们可以使用out参数

注意:out参数在内部必须要给其赋值,在使用out关键字的时候,要确保函数能够正确的返回out定义的值,要全方位考虑好,并且定义了out的变量,必须在函数内进行赋值。

image.png

2.out关键字的案例,实现验证用户输入的用户名和密码

                static bool Login(string usename, string password,out string msg)
                 //在使用out关键字的时候,要确保函数能够正确的返回out定义的值,要全方位考虑好
             {
                 if(usename == "admin" && password == "123456")
                 {
                     msg = "登录成功";
                     return true;
                 }else if(usename == "admin" && password != "123456")
                 {
                     msg = "密码错误";

                 }else if (usename != "admin" && password == "123456")
                 {
                     msg = "用户名错误";
                 }else
                 {
                     msg = "用户名密码错误";
                 }
                 return false;
             }

             //调用,执行函数
             Login(usename, password, out msg);
             //输出验证信息
             Console.WriteLine(msg);

总结:简单来说,out修饰的变量,在函数内进行赋值的时候,就会调用函数的时候,在函数内赋值的值就会被带出来,如果没有out修饰的变量的话,你直接赋值的话是改变不了原来定义的值的。并且要确保out的值能够被返回。

一.ref参数的使用和注意事项

  • 作用:给形参前面加一个ref,可以将外部变量带入到函数中进行赋值改变,然后将改变后的值在传出来赋值给传进来的变量名,ref参数要求变量外部必须赋值,方法内部可以不赋值

image.png

总结out和ref的区别: 1.相同之处: 都可以改变外部的变量的值,在函数内进行赋值都可以把值给带出来。

2.不同之处:
out可以不定义初始值,但是在函数里面必须确保要赋值,要保证有值返回 ref是必须要赋初始值的,函数内部可用可不用赋值。