首页 文章

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

提问于
浏览
75

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

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

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

void f1(String... a)

2 回答

  • 31

    看看params (C# Reference)

    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);
    
  • 109

    是的,C#具有相当于varargs的参数 . 它们被称为parameter arrays,并使用 params 修饰符引入:

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

    然后用:

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

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

相关问题