いくつかのコンテキスト: コレクションに物を追加するための主なメソッドが Add (またはそのようなもの) という名前のメソッド (または複数のメソッド) を介して行われるクラスを作成したいと思います。そのため、最良のシグネチャは params object[] です。内部的には、まさにこの関数は、受け入れることができるすべてのタイプを切り替え/ if-else する必要があります。したがって、最初はこの object[] 配列を受け入れることができましたが、object[][] や object[][][] なども受け入れて、メソッド/関数を内部的にフラット化できるようにしたいと思うかもしれません。ユーザーは、この関数を呼び出す前にそれを行う必要はありません。
そう...
単一の種類のオブジェクトに対してさまざまなレベルのリスト型を受け入れることができる関数を作成することは可能ですか? 副次的な質問として、クラスへのインターフェースを設計するとき、(編集:すでに十分なことが起こっているため、質問から削除されました。)object[]
またはどちらを受け入れるのが良いですIEnumerable<object>
かparams object[]
?
たとえば、 , の両方/すべて、および場合によっては , (および on、on および on など) のようなさらにネストを受け入れる関数を考えobject[]
ていますIEumerable<object>
。IEnumerable<IEnumerable<object>>
object[][]
これは可能ですか?