2020-11-13

方法的高级参数

out参数

1、如果你在一个方法中,返回多个形同类型的值的时候,可以考虑返回一个数组。但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们考虑使用out参数。
out参数就侧重于在一个方法中返回多个不同类型的值,也能返回相同类型的值。
例1:不使用out参数

//写一个方法,求一个数组中的最大值、最小值、总和、平均值
Program{
  static  Main(string[] args){
    int[] numbers = {1,2,3,4,5,3,32,5,5};
    //调用GetList方法
    int [] res = GetList(numbers);
    Console.WriteLine("最大值{0},最小值{1},总和{2},平均值是{3}",res[0],res[1],res[3],res[4]);
    Console.ReadKey();
  }
  public static int[] GetList(int[] nums)
  {
       //返回值
      int[] res = new int[4];
     //假设res[0]为最大值,res[1]为最小值,res[2]总和,res[3]平均值
     res[0] = nums[0];//max
     res[1] = nums[1];//min
     res[2] = 0;//sum
     for(int 1 = 0;i<nums.Length;i++)
     {
       if(num[i]>res[0]){res[0] = nums[i];}
       if(num[i]<res[1]){res[1] = num[i];}
       res[2] += nums[i];
     }
     //平均值
     res[3] = res[2]/nums.Length; 
     return res;//返回值 }
}

注:以上代码中四个值都是int类型,所以可以用int[]接收。

例2:使用out参数

Program{
  static void Main(string[] args){
    int[] numbers = {1,2,3,4,5,3,32,5,5};
    //变量需要声明、赋值、使用
    int max = 0;
    int min = 0;
    int sum = 0;
    int avg = 0;
    string s; 
      Test(numbers,out max,out min,out sum,out avg);
      Console.WriteLine(max);
       Console.WriteLine(min);
        Console.WriteLine(avg);
         Console.WriteLine(sum);
          Console.WriteLine(s);
          Console.ReadKey();
    }
    public static void Test(int[] nums,out int max,out int min,out int avg,out int sum,out string s)//5个参数表示在方法内部多余返回回来的参数
    {
       //out参数要求在方法内部必须为其赋值
       max = nums[0];
       min = nums[0];
       sum = 0;
       s="";
       for(int i = 0;i<nums.Length;i++)
       {
         if(nums[i]>max){max=nums[i];}
         if(nums[i]<min){min=nums[i]}
         sum += nums[i];
       } 
       avg = sum/nums.Length;
       //不需要返回值 因为void  }
//分别提示用户输入用户名和密码
//写一个方法判断用户的输入是否正确
//返回给用户一个登录结果(”登录成功/失败“),并且还要单独返回用户一个登录信息
//如果用户名错误,除了返回登录结果意外,还要返回一个”用户名错误“/”密码错误“
//解析:以上需求有两个返回值:登录结果、登录信息
Program{
  static void Main(string[] args){
  Console.WriteLine("输入用户名:");
  string UserName = Console.ReadKey();
  Console.WriteLine("输入密码:");
  string password = Console.ReadKey();
  string msg;
  bool b = IsLogin(UserName,Password,out msg);
   Console.WriteLine("登录结果{0}",b);
    Console.WriteLine("登录信息{0}",msg);
  }

//这里我们用登录结果作为返回值
public static bool Islogin(string name.string pwd,out string msg)//在判断登陆时,需要传入name、pwd才能返回bool类型的登录结果,除此之外还需要多余返回一个msg(登录信息)
{
  if(name == "admin" && pwd == "zzz123"{
     msg = "登录成功!"
     return true;//因为是bool类型的返回
  }
  else if (name == "admin")
  {
      msg = "密码错误!"
     return flase;
  }
  else if(pwd == "zzz123")
  {
    msg="用户名错误!"
    return flase;
  } 
  else
  {
      msg="未知错误!"
    return flase;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值