C#参数列表中的params

  1. 在参数数目可变时采用方法参数params。
  2. params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字。
  3. params不允许与ref\out组合使用。
  4. params在你不知道参数数量时显得很有用,虽然也可以使用List等集合代替,但是params显得更直观。
  5. params只能用于一维数组,不能用于多维数组和诸如ArrayList、List<T>等类似于数组的集合类型。
  6. 因为是可变长,所以长度可以为0,也就是省略。
  7. 可变参数和不变参数可以同时存在。
  8. 若实参是数组则按引用传递,若实参是表达式则按值传递。

参考资料:

https://blog.csdn.net/dalmeeme/article/details/7193487

以下是本人调试的代码:

using System;

namespace 方法参数params
{
    class Program
    {
        static void Main(string[] args)
        {
            UseParams(1, 2, 3);//可以这样调用
            UseParams(new int[] { 110, 119, 120 });//也可以这样调用
            UseParams();//还可以这样调用
            UseParams(null);//还可以这样调用
            UseParams2(1, 'a', "test");

            //An array of objects can also be passed, as long as
            //the array type matches the method being called.
            int[] myarray = new int[3] { 10, 11, 12 };
            UseParams(myarray);

            //UseParams5(1,2);参数列表中没有params,就不能这样调用了

            UseParams6("chenwei", 1, 1, 1, 1, 1);//不变参数和可变参数可以同时存在

            UseParams7(1, 2, 3);
            int[] arr = new int[] { 4, 5, 6 };
            UseParams7(arr);//若实参是数组,则按引用传递

            Console.ReadLine();
        }

        public static void UseParams(params int[] list)
        {
            if (list == null)
            {
                Console.WriteLine("null");
                return;
            }

            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.WriteLine();
        }

        public static void UseParams2(params object[] list)
        {
            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.WriteLine();
        }

        //params必须是最后一个参数
        //public static void UseParams3(params int[] list, string str)
        //{
        //    //
        //}

        //params不允许与ref\out组合使用
        //public static void UseParams4(params ref int[] list)
        //{
        //    //
        //}

        public static void UseParams5(int[] list)
        {
            Console.WriteLine("这是5");
        }

        public static void UseParams6(string name, params int[] arr)
        {
            Console.WriteLine(name);
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]);
            }
            Console.WriteLine();
        }

        public static void UseParams7(params int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = 0;
            }

            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]);
            }

            Console.WriteLine();
        }
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值