質問: "デフォルト値"; }); } ``` このようにして、少しだけ動作を遅らせて動かす仕組みを作ってみました。 comboBoxは単なる例です。 Comboboxで何を選択しても、すぐにデフォルト値に戻るような動きをします。 (実際には特定の項目だけデフォルト値に戻る、 というような実装をしています) このときに、この、`WaitExecute`に引数として、引き数なしの`Action`を渡すだけではなく 引き数が任意個数の、たとえば、`Action` や `Action`や `Action` などを渡したいのです。 `WaitExecute`を修正して`Action`を引き渡したときに ジェネリックとして記載するのだと思うのですが、 そのやり方がわかりません。 検索ワードの工夫も難しくテクニックなどがみつかりませんでした。 ご存知でしたら教えてください。 このようなテクニックがわかるWebサイトなどを 示していただくのも助かります。 よろしくお願いします。
回答: `Action`を実行するには`string`引数が必要ですし、`Action`を実行するには2つの`string`引数が必要なわけで、 * `WaitExecute(int milliseconds, Action f)` * `WaitExecute(int milliseconds, Action f, T0 s0)` * `WaitExecute(int milliseconds, Action f, T0 s0, T1 s1)` と引数ごとに異なるシグネチャになります。C#言語ではこれらをひとつにまとめて記述する機能はないため、適切な検索キーワードもありませんし、見つからないのも当然ではあります。余談ですが、C++言語ではVariadic Templates(可変引数テンプレート)という機能で記述できます。 さてC#言語ではそれぞれのメソッドを記述する必要がありますが、この例であれば実現するほどのメリットがあるか疑問です。 なお単に遅延させるだけであれば`Task.Delay`メソッド.aspx)が用意されています。 ``` private async void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) { await Task.Delay(100); comboBox1.Text = "デフォルト値"; } ```