灵活而又可怕的params参数数组

某日,我们一项目重构,不小心为一个类增加了一个Delete(string key)的方法,编译通过,初看无恙,但一执行起来就不是那么回事了,仔细一查,才知道,类中有一个同名的重载方法,参数为一个params参数数组,难道是它作祟? 
  

Msdn一下,果然如此:参考资料:params(C# 参考)http://msdn.microsoft.com/zh-cn/library/w5zay9db(v=VS.100).aspx

也就是它可以接受如下代码里的各种参数,真是太灵活了,像个黑洞,有点可怕。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            LzdTools.Test("aaa");

            LzdTools.Test("aaa", "bbb");
            LzdTools.Test("aaa", "bbb", "ccc");

            string[] arr = { "ddd", "eee", "fff" };
            LzdTools.Test(arr);

            Console.ReadKey();          
        }      
    }

    public static class LzdTools
    {
        public static void Test(params string[] v)
        {
            if (v.Length > 0)
                Console.WriteLine(v[0]);
           
            if (v.Length > 1)
                Console.WriteLine(v[1]);
           
            if (v.Length > 2)
                Console.WriteLine(v[2]);
           
            if (v.Length > 3)
                Console.WriteLine(v[3]);
        }
    }
}

原文地址:https://www.cnblogs.com/liuzhendong/p/2318271.html