C# 为什么要使用params关键字
我正在温习我的C#技能,读一本C#书。我在数组一章中遇到了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[]
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++程序员高兴,他们习惯了。数组仍然是被创建的,它只是隐式完成的。好吧,在执行时仍然有工作要做——这就是我的观点。仍在创建和填充阵列。在对性能非常敏感的代码中,最好有几个重载来避免这种情况。好吧,不需要显式创建数组。数组仍然是被创建的,它只是隐式完成的。好吧,在执行时仍然有工作要做——这就是我的观点。仍在创建和填充阵列。在对性能非常敏感的代码中,最好有几个重载来避免这种情况。