为什么要使用params关键字

Luk*_*101 1 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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是没有参数的代码:

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 11

Console.WriteLine您觉得哪些电话更清楚?

Console.WriteLine("Hello {0}, you are {1}", person.Name, person.Age);
Run Code Online (Sandbox Code Playgroud)

要么

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

(new[]在上面的例子中你甚至不能使用隐式类型的数组(),除非它们是类型person.Nameperson.Age类型object......如果它们都是类型string你可以,但它会创建一个字符串数组...)

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

Prints("cs150", "cs250", "cs270", "cs300", "cs350");
Run Code Online (Sandbox Code Playgroud)

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