C#params关键字接受多个数组

Fal*_*ude 8 .net c# arrays params

考虑这种方法

public static void NumberList(params int[] numbers)
{
    foreach (int list in numbers)
    {
        Console.WriteLine(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以调用这个方法并提供单独的integers或单个数组integers.在方法范围内,它们将被放入一个名为numbers (对吗?)的数组中,我可以继续操作它们.

// Works fine
var arr = new int[] { 1, 2, 3};
NumberList(arr);
Run Code Online (Sandbox Code Playgroud)

但是,如果我想调用该方法并提供数组,我会收到错误.你如何为数组启用params

// Results in error
var arr = new int[] { 1, 2, 3};
var arr2 = new int[] { 4, 5, 6 };
NumberList(arr, arr2);
Run Code Online (Sandbox Code Playgroud)

Yuv*_*kov 6

你需要的类型是int[].因此,您需要传递int[]单个int参数,或传递单个参数,让编译器为您分配数组.但是你的方法签名不允许的是多个数组.

如果要传递多个数组,可以要求您的方法接受允许传递多个数组的任何表单:

void Main()
{
    var arr = new[] { 1, 2, 3 };
    NumberList(arr, arr);
}

public static void NumberList(params int[][] numbers)
{
    foreach (var number in numbers.SelectMany(x => x))
    {
        Console.WriteLine(number);
    }
}
Run Code Online (Sandbox Code Playgroud)