为什么要使用params关键字

时间:2012-10-20 19:41:56

标签: c# parameters console-application

我正在刷新我的C#技能并阅读C#书。我在数组章节中遇到了params关键字。为什么有人会实际使用params关键字而不是将常规数组传递给方法。我测试了使用和不使用params关键字传递数组的两种方法。他们都工作得很好。有没有真正的理由使用params关键字?

这是我的代码:

using System;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] classname = new string[5] { "cs150", "cs250", "cs270", "cs300", "cs350" };
            Prints(classname);

            Console.Read();
        }

        public static void Prints(params string[] t)
        {
            foreach (var s in t)
            {
                Console.WriteLine(s);
            }
        }
    }
}

以下是没有参数的代码:

using System;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] classname = new string[5] { "cs150", "cs250", "cs270", "cs300", "cs350" };
            Prints(classname);

            Console.Read();
        }

        public static void Prints(string[] t)
        {
            foreach (var s in t)
            {
                Console.WriteLine(s);
            }
        }
    }
}

5 个答案:

答案 0 :(得分:11)

您对Console.WriteLine的哪些来电更清楚?

Console.WriteLine("Hello {0}, you are {1}", person.Name, person.Age);

Console.WriteLine("Hello {0}, you are {1}",
                  new object[] { person.Name, person.Age });

(除非new[]person.Name的类型为person.Age,否则您无法在上述情况下使用隐式类型数组(object)...如果它们都是string类型你可以,但它会创建一个字符串数组......)

我更喜欢第一个。阅读起来比较简单。这就是params的全部内容 - 它只允许调用者使用更简洁的语法。您仍然可以像在代码中那样以正常方式传递数组引用 - 但是您也可以 只写:

Prints("cs150", "cs250", "cs270", "cs300", "cs350");

...再次,比宣布单独的变量更容易阅读。

答案 1 :(得分:4)

使用params,你可以这样调用你的方法:

Prints("1", "2", "3", "4", "5");

没有参数,你就不能。

此外,您可以在以下两种情况下使用数组作为参数调用该方法:

Prints(new string[] { "1", "2", "3", "4", "5" });

也就是说,params允许您在调用方法时使用快捷方式。

答案 2 :(得分:2)

使用params,您可以在不创建数组的情况下调用方法:

Prints("cs150", "cs250", "cs270")

答案 3 :(得分:0)

params关键字的目的是

  

将编码经验简化为使用库或编程的编码人员   你创造的方法。

答案 4 :(得分:0)

如果传递没有“params”关键字的参数,那么你只能传递数组(数组大小)中指定的元素,但是使用“params”你不需要指定数组中的arrgument数量(数组大小)并且可以传递根据需要调用函数的任意数量的参数。