看到C#中有params关键字可用作未知长度的数组参数。
那么:
void Method1(int, params string[] ParaArray)
void Method2(int, string[] ParaArray)Method1和Method2有什么区别吗?在什么情况下params比数组有优势呢?

解决方案 »

  1.   

    void Method1(int, params string[] ParaArray)
    调用该方法: 参数为一个int,多个String
    eg: Method1(1,"a","b","c");void Method2(int, string[] ParaArray)
    调用该方法: 参数为一个int,一个String数组
    eg:
    String[] arr = new String[]{"a","b"};
    Method2(2,arr);
      

  2.   

    前者是传递多个参数;
    后者是传递一个参数,这个参数是一个数组。
    调用的时候就可以看出区别:
    Method1(1, "a");
    Method1(1, "a", "b", "c");string arr = new string[] {"a", "b"};
    void Method2(1, arr)
      

  3.   

    params 关键字在方法成员的参数列表中使用,为该方法提供了参数个数可变的能力
    public static void UseParams(params object[] list)
        {
            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
        }    static void Main()
        {
            // 一般做法是先构造一个对象数组,然后将此数组作为方法的参数
            object[] arr = new object[3] { 100, 'a', "keywords" };
            UseParams(arr);
            // 而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数
            // 当然这组参数需要符合调用的方法对参数的要求
            UseParams(100, 'a', "keywords");
            Console.Read
      

  4.   


    还是没看出有什么优势来,反而觉得PARAMS会把调用出的代码变得很乱
      

  5.   

    void Method1(int, params string[] ParaArray)这个
    String[] arr = new String[]{"a","b"};
    Method1(2,arr);
    也可以和不标params的一样传入string[]对象我觉得最大的区别就是
    标记params的参数可以不传
    例如
    void Method1(int, params string[] ParaArray)这个
    直接调用Method1(2);编译也会过