14

したがって、最初のパラメーターがデフォルト値を提供し、2番目のパラメーターがparamsコレクションであるメソッドシグネチャを持つことが可能であることがわかります。

私が見ることができないのは、最初の引数のデフォルト値を実際に使用する方法です。

それは可能ですか?

方法の例:

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

最初は、メソッドを呼び出すときにメッセージパラメーターを省略してみました。また、パラメーターでは機能しない名前付きパラメーターを使用してみました。

コンパイルしますが、使用できますか?

4

1 に答える 1

27

最初のパラメーターの値を指定せずにメソッドを呼び出す3つの方法を見つけることができます。

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();
    }
}

ただし、配列を明示的に作成せずに複数の値を指定する方法は見つかりませんでした...

于 2012-10-05T13:22:21.017 に答える