用无限参数创建方法?

Mar*_*elo 53 .net c# overloading function

在C#中你可以这样做:

foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...);
Run Code Online (Sandbox Code Playgroud)

此方法Format()接受无限参数,第一个是如何格式化字符串,其余是要放在字符串中的值.

今天我遇到了一种情况,我必须得到一组字符串并测试它们,然后我记得这种语言功能,但我不知道.在几次不成功的网络搜索之后,我意识到获得一个阵列会更加谨慎,这并不能让我非常满意.

问:如何创建一个接受无限参数的函数?我该如何使用它?

Kla*_*sen 94

使用params关键字.

这是一个例子:

    public int SumThemAll(params int[] numbers)
    {
        return numbers.Sum();
    }

    public void SumThemAllAndPrintInString(string s, params int[] numbers)
    {
        Console.WriteLine(string.Format(s, SumThemAll(numbers)));
    }

    public void MyFunction()
    {
        int result = SumThemAll(2, 3, 4, 42);
        SumThemAllAndPrintInString("The result is: {0}", 1, 2, 3);
    }
Run Code Online (Sandbox Code Playgroud)

代码显示各种事物.首先,params关键字的参数必须始终为last(并且每个函数只能有一个).此外,您可以调用params以两种方式接受参数的函数.第一种方法在第一行中说明,MyFunction其中每个数字作为单个参数添加.但是,也可以使用数组SumThemAllAndPrintInString调用它,如所示,SumThemAll使用int[]被调用的调用numbers.

  • @MarceloRamires:点击链接.无论如何,我无法解释它比文档更好;-) (11认同)
  • 其实你可以; 这个解释只有两行加上一个例子.不是说文档不够好,只是说如果你愿意,你可以更好地解释它. (3认同)

Dav*_*ton 19

使用params关键字.用法:

public void DoSomething(int someValue, params string[] values)
{
    foreach (string value in values)
        Console.WriteLine(value);
}
Run Code Online (Sandbox Code Playgroud)

使用params关键字的参数总是在最后.

  • 无限的价值应该在最后,对吗?如果我想要一个整数,它必须**在开头,对吧? (2认同)

bak*_*san 6

几点说明.

Params需要在数组类型上标记,如string []或object [].

标记为w/params的参数必须是您方法的最后一个参数.例如,Foo(string input1,object [] items).