是否有Java的可变参数参数的C#替代品?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我曾经从事Java和.NET新技术

是否有可能在C#中声明一个接受变量输入参数的函数

是否有任何C#语法与以下Java语法相似?

void f1(String... a)
提问于
用户回答回答于

看看params(C#参考)

params关键字可让您指定一个方法参数,其中包含可变数量的参数。 您可以发送参数声明中指定类型的参数的逗号分隔列表,或者指定类型的参数数组。你也可以不发送参数。 在方法声明中的params关键字之后不允许有其他参数,并且在方法声明中只允许使用一个params关键字。

如示例中所示,该方法被声明为

public static void UseParams(params int[] list)
{
    for (int i = 0; i < list.Length; i++)
    {
        Console.Write(list[i] + " ");
    }
    Console.WriteLine();
}

并用作

UseParams(1, 2, 3, 4);
用户回答回答于

是的,C#有相当于可变参数的参数。它们被称为参数数组,并引入了params修饰符:

public void Foo(int x, params string[] values)

然后用以下方式调用它

Foo(10, "hello", "there");

就像使用Java一样,它只是最后一个参数,可以像这样变化。请注意(与Java一样)一个参数params object[] objects很容易引起混淆,因为您需要记住一个类型的单个参数是否object[]要重新包装。同样,对于任何可空类型,您需要记住一个参数是否null会被视为数组引用或单个数组元素。(我认为编译器只会在必要时创建数组,但我倾向于编写代码来避免我必须记住这一点。)

扫码关注云+社区