方法中的返回参数(out参数)

方法中的参数(out参数)

1、out参数

(1)使用数组返回多个值(同一类型)

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 函数中参数
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个函数,返回数组中的最大、最小值、平均值、总和
            int[] nums = { 1, 3, 24, 5, 6, 7, 12, 9 };
            int[] res=GetMaxMinAvgeSum(nums);
            Console.WriteLine("最大值为:{0},最小值为:{1},总和为:{2},平均值为:{3}", res[0], res[1], res[3], res[2]);
            Console.ReadKey();
           
        }

        //将要返回的多个值放在一个数组中返回
        public static int[] GetMaxMinAvgeSum(int[] nums)    //返回值为一个数组
        {
            int[] result = new int[4];    //要返回的数组定义
            //假设result[0]存放最大值,result[1]存放最小值,result[2]存放平均值,result[3]存放总和
            result[0] = nums[0];  //假设最大值为数组中的第0个元素
            result[1] = nums[0];  //假设最小值为数组中的第0个元素
            result[2] = 0;        //平均值
            result[3] = 0;        //总和
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > result[0])  //进行最大值求取
                {
                    result[0] = nums[i];
                }
                if (nums[i] < result[1])  //进行最大值求取
                {
                    result[1] = nums[i];
                }
                result[3] += nums[i];     //求总和

            }
            result[2] = result[3] / nums.Length;    //求平均值

            return result;  //返回数组
        }
    }
}

运行结果


(2)返回多个值(属于不同类型)

当返回多个值时,每个值属于不同的类型,则不能使用数组返回。可以使用out参数,out参数可以用于在一个方法中返回多个不同类型的值。

实例1----代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 函数中参数
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个函数,计算数组中的最大、最小值、平均值、总和
            int[] nums = { 1, 3, 24, 5, 6, 7, 12, 9 };
            int max=0;
            int min=0;
            int sum=0;
            int avg=0;
            Test(nums, out max, out min, out sum, out avg);
            Console.WriteLine("最大值为:{0},最小值为:{1},总和为:{2},平均值为:{3}", max, min, sum, avg);
            Console.ReadKey();
           
        }
        public static void Test(int[] nums,out int max,out int min,out int sum,out int avg)
        {
            //out参数要求在方法的内部必须为其赋值
            max = nums[0];
            min = nums[0];
            sum = 0;
            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;    //求平均值
        }
    }
}

运行结果:


实例2----代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 函数中参数
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个函数,计算数组中的最大、最小值、平均值、总和
            int[] nums = { 1, 3, 24, 5, 6, 7, 12, 9 };
            int max=0;
            int min=0;
            int sum=0;
            int avg=0;
            bool b;
            string s;
            double d;
            Test(nums, out max, out min, out sum, out avg,out b,out s,out d);
            Console.WriteLine("最大值为:{0},最小值为:{1},总和为:{2},平均值为:{3},b:{4},s:{5},d:{6}", max, min, sum, avg,b,s,d);
            Console.ReadKey();
           
        }
        public static void Test(int[] nums,out int max,out int min,out int sum,out int avg,out bool b,out string s,out double d)
        {
            //out参数要求在方法的内部必须为其赋值
            max = nums[0];
            min = nums[0];
            sum = 0;
            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;    //求平均值

            //必须对剩余的参数赋值
            b = true;
            s = "Hello";
            d = 0.45;
        }
    }
}

运行结果:


实例2----代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace out参数使用
{
    class Program
    {
        static void Main(string[] args)
        {
            //分别提示用户输入用户名和密码
            //定义个方法来判断用户输入的是否正确,返回登录的结果,并返回用户的登录信息
            Console.WriteLine("请输入用户名:");
            string username = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string userpwd = Console.ReadLine();
            string str_msg;
            bool s = IsLogin(username, userpwd, out str_msg);
            Console.WriteLine("登录结果为:{0}\n登录信息:{1}\n", s, str_msg);
            Console.ReadKey();
        }

        //方法定义,msg是返回的信息
        public static bool IsLogin(string name, string pwd, out string msg)
        {
            if (name=="admin" && pwd=="8888")
            {
               
                msg = "登录成功";
                return true;
            }
            else if (name == "admin")
            {
                msg = "密码错误";
                return false;
            }
            else if (pwd=="8888")
            {
                msg = "用户名错误";
                return false;
            }
            else
            {
                msg="未知错误";
                return false;
            }
        }
    }
}

运行结果:


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值