C# 为什么要使用params关键字

C# 为什么要使用params关键字,c#,parameters,console-application,C#,Parameters,Console Application,我正在温习我的C#技能,读一本C#书。我在数组一章中遇到了params关键字。为什么会有人实际使用params关键字,而不是只向方法传递一个常规数组。我测试了这两种方法,它们通过一个带有和不带params关键字的数组。他们都干得很好。使用params关键字有什么现实原因吗 这是我的密码: using System; namespace ConsoleApplication9 { class Program { static void Main(string[]

我正在温习我的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);
            }
        }
    }
}

您觉得对
Console.WriteLine
的这些调用中哪一个更清晰

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

(在上述情况下,您甚至不能使用隐式类型的数组(
new[]
),除非
person.Name
person.Age
属于
object
类型……如果它们都属于
string
类型,您就可以了,但它会创建一个字符串数组……)

我喜欢第一个。它更容易阅读。这就是
params
——它只允许调用方使用更简洁的语法。您仍然可以按常规方式传递数组引用,就像您在代码中所做的那样-但您也可以只编写:

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

。。。同样,它比声明一个单独的变量更容易阅读。

您觉得对
控制台.WriteLine的哪些调用更清晰

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

(在上述情况下,您甚至不能使用隐式类型的数组(
new[]
),除非
person.Name
person.Age
属于
object
类型……如果它们都属于
string
类型,您就可以了,但它会创建一个字符串数组……)

我喜欢第一个。它更容易阅读。这就是
params
——它只允许调用方使用更简洁的语法。您仍然可以按常规方式传递数组引用,就像您在代码中所做的那样-但您也可以只编写:

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

。。。这比声明一个单独的变量更容易阅读。

使用参数,您可以调用方法而无需创建数组:

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

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

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

使用params,可以如下方式调用方法:

Prints("1", "2", "3", "4", "5");
没有params,你就不能

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

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

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

使用params,您可以如下方式调用方法:

Prints("1", "2", "3", "4", "5");
没有params,你就不能

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

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

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

params关键字的用途是

为使用库或库的程序员简化编码体验 你用过的方法


params关键字的用途是

为使用库或库的程序员简化编码体验 你用过的方法


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

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

params关键字在传递给方法的参数数量可变的情况下非常有用。它基本上说,“嘿,不管他们向这个方法发送1个字符串还是100个字符串,都要以相同的方式对待它们*”(警告比比皆是)。它只能是方法的最后一个参数。这正是params关键字的作用。这叫做“语法糖”。它很甜。否则,在C语言和C++程序员中,他们会习惯于使用它。在可能传递给方法的变量数目可变的情况下,PARAMS关键字是有用的。它基本上说,“嘿,不管他们向这个方法发送1个字符串还是100个字符串,都要以相同的方式对待它们*”(警告比比皆是)。它只能是方法的最后一个参数。这正是params关键字的作用。这叫做“语法糖”。它很甜。否则,添加到语言中,使C和C++程序员高兴,他们习惯了。数组仍然是被创建的,它只是隐式完成的。好吧,在执行时仍然有工作要做——这就是我的观点。仍在创建和填充阵列。在对性能非常敏感的代码中,最好有几个重载来避免这种情况。好吧,不需要显式创建数组。数组仍然是被创建的,它只是隐式完成的。好吧,在执行时仍然有工作要做——这就是我的观点。仍在创建和填充阵列。在对性能非常敏感的代码中,最好有几个重载来避免这种情况。