我不明白参数数组的用处?

时间:2011-05-10 18:47:22

标签: c#

参数数组允许将可变数量的参数传递给方法:

    static void Method(params int[] array)
    {}

但我没有看到它们的用处,因为通过指定特定数组类型的参数可以实现相同的结果:

    static void Method(int[] array)
    {}

那么参数数组对数组类型的值参数有什么好处(如果有的话)?

谢谢

5 个答案:

答案 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});