102

我从事过 Java 和 .Net 技术的新手工作

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

是否有任何类似于以下 Java 语法的 C# 语法?

void f1(String... a)
4

2 回答 2

162

是的,C# 有一个等价的可变参数。它们被称为参数数组,并通过params修饰符引入:

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

然后调用它:

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

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

于 2013-08-12T19:14:45.090 回答
38

看看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);
于 2013-08-12T19:15:55.033 回答