2011年08月07日
川俣晶の縁側ソフトウェア技術雑記 total 3733 count

C#のparamsとは何だろうか

Written By: 川俣 晶連絡先

 急に基本的なことが妙に気になって考えてみました。

 C#はparamsキーワードで可変長引数が可能です。

 ところがこの機能はねじれていて、paramsキーワードが付いていると配列を引数として受け入れ可能です。

 つまり、可変長引数は「可変長引数」と言いながら配列も受け入れます。

 そこで逆から考えます。

 配列を引数として持つメソッドにparamsキーワードを付けるとどうなるのかといえば、依然として配列は受け入れ可能です。では、そのとき引数に配列では無く可変長引数を書いた場合は何が起きるのか。引数となる配列の初期値となるわけですね。

 つまり、配列の初期値を直接列挙できるシンタックスシュガーとしてparamsは使えるみたいですねえ。

 良く分からないけれど、ソースをシンプルに短くできる可能性はありそう。

※ ただし、paramsの制約から全てのケースで上手く行くわけではない