参数数组允许将可变数量的参数传递给方法:
static void Method(params int[] array)
{}
但我没有看到它们的用处,因为通过指定特定数组类型的参数可以实现相同的结果:
static void Method(int[] array)
{}
那么参数数组对数组类型的值参数有什么好处(如果有的话)?
谢谢
答案 0 :(得分:7)
这只是代码可读性的事情。例如,string.Format:
string value = string.Format("SomeFormatString", param1, param2, param3, param4.... param999);
它可以在不同的生命周期中写成:
string value = string.Format("SomeFormatString", new string[] { param1, param2, param3 });
最后,使代码更容易阅读和更容易理解只是语法上的糖。
答案 1 :(得分:6)
在第二个示例中,消费者无法使用
调用它MyType.Method(1, 2, 3)
答案 2 :(得分:2)
我更喜欢写
Method(1, 2, 3, 4, 5);
而不是
Method(new int[] { 1, 2, 3, 4, 5} );
答案 3 :(得分:2)
好处是编译器会自动为您创建数组:
string coor = String.Concat("x=", x, ", y=", y);
为您生成的代码实际上是:
string coor = String.Concat(new string [] { "x=", x, ", y=", y });
你甚至可以获得两全其美。如果您碰巧在数组中包含数据,则可以将其传递给具有params
参数的方法。
答案 4 :(得分:1)
这就是他们被召唤的方式。
在第一个示例中,使用params,您可以调用Method(1,2,3,4,5);
在第二个示例中,如果没有参数,则必须将其称为Method(new [] {1,2,3,4,5});