So I see that it's possible to have a method signature where the first parameter provides a default value and the second parameter is a params collection.
What I can't see is a way to actually use the default value of the first argument.
Is it at all possible?
Example method:
void WaitAllTasks(string message = "Running Task.WaitAll", params Task[] tasks);
I initially tried omitting the message parameter when calling the method and also tried using named parameters, which doesn't work with params.
It compiles, but is it possible to use it?
I can find three ways of calling the method without specifying a value for the first parameter:
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();
}
}
I haven't found a way of specifying multiple values without explicitly building the array though...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With