参数关键字:params,ref,out

c#参考方法之参数关键字:params,ref,out

1.params:可以直接使用一组对象作为参数

{
            //计算平均分数
            double avg = GetAvg(100, 95, 85,90);
            Console.WriteLine(avg);
            Console.ReadKey();
        }

        //一般做法是先构造一个对象数组,然后将此数组作为方法的参数,而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数
        // 当然这组参数需要符合调用的方法对参数的要求
        private static double GetAvg(params int[] score)
        {
            double sum = 0;
            for (int i = 0; i < score.Length; i++)
            {
                sum += score[i];
            }
            return sum / score.Length;
        }

**2.ref:在方法中对参数所做的任何更改都将反映在该变量中(引用传递)

  1. 若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化.
  2. 属性不是变量,因此不能作为 ref 参数传递。
  3. 尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
       {
            //有ref及没有用ref的对比,参数的变化
            int salary1 = 5000;
            int salary2 = 5000;
            JiangLi(salary1);
            FaKuan(ref salary2);
            Console.WriteLine(salary1);
            Console.WriteLine(salary2);
            Console.ReadKey();
        }

        private static void JiangLi(int s)
        {
            s += 500;
        }

        private static void FaKuan(ref int s)
        {
            s += 500;
        }

3.out:能够返回多个值,直接显示在面板上


          {
            //求数组的最大值、最小值、累加和、平均值
            int[] nums = { 1,2,3,4,5,6,7,8,9};
            int max, min, sum, avg;
            bool b;
            string s;
            double d;
            GetMaxMinSumAvgs(nums, out max,out min,out sum,out avg,out b,out s,out d);
            Console.WriteLine(max);
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.WriteLine(avg);
            Console.WriteLine(b);
            Console.WriteLine(s);
            Console.WriteLine(d);
            Console.ReadKey();
        }
        private static void GetMaxMinSumAvgs(int[] nums, out int max, out int min, out int sum, out int avg,out bool b,out string s,out double d)
        {
            b = true;
            s = "你好";
            d = 3.14;
            max = nums[0];
            min = nums[0];
            sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                if (max<nums[i])
                {
                    max = nums[i];
                }
                if (min>nums[i])
                {
                    min = nums[i];
                }
                sum += nums[i];
            }
            avg = sum / nums.Length;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值