Дополнительный аргумент, за которым следует Params

Итак, я вижу, что возможно иметь подпись метода, где первый параметр предоставляет значение по умолчанию, а второй параметр - набор параметров.

То, что я не вижу, - это способ фактически использовать значение по умолчанию для первого аргумента.

Возможно ли это?

Пример метода:

void WaitAllTasks(string message = "Running Task.WaitAll", params Task[] tasks);

Сначала я попытался опустить параметр сообщения при вызове метода, а также попытался использовать именованные параметры, который не работает с параметрами.

Он компилируется, но можно ли его использовать?

Ответ 1

Я могу найти три способа вызова метода без указания значения для первого параметра:

using System;

class Test
{
    static void PrintValues(string title = "Default",
                            params int[] values)
    {
        Console.WriteLine("{0}: {1}", title, 
                          string.Join(", ", values));
    }

    static void Main()
    {
        // Explicitly specify the argument name and build the array
        PrintValues(values: new int[] { 10, 20 });
        // Explicitly specify the argument name and provide a single value
        PrintValues(values: 10);
        // No arguments: default the title, empty array
        PrintValues();
    }
}

Я не нашел способ задания нескольких значений без явного построения массива, хотя...