少なくとも1つのパラメータを必要とする:ParamArrayはを使用して、私が持っていた何
Public Sub Subscribe(channel As ChannelType)
Public Sub Subscribe(channels As IEnumerable(Of ChannelType))
最初のものは、単に配列にそのパラメータを変換するために{channel}
と第二1を呼び出します。
メソッドに渡すチャンネルのリストを作成する必要があり、2つのオーバーロードをParamArray
という1つのメソッドに結合するのが難しいと判断しました。
Public Sub Subscribe(ParamArray channels() As ChannelType)
'Usage
Subscribe(ChannelType.News)
Subscribe(ChannelType.News, ChannelType.Sports)
Subscribe() 'Oops... this is valid
「ベストプラクティス」とは何ですか?私はParamArray
が人々にものを渡すだけで私に与える柔軟性が好きですが、コンパイラのエラーフィードバックを介して開発者を「失敗する」より速く助けることができません...つまり、ArgumentException
のようなものはここから質問ですこのメソッドを使用すると、単体テストが記述されない可能性があります。一つのオプションは、次の...
Public Sub Subscribe(channel As ChannelType)
Public Sub Subscribe(channel As ChannelType, ParamArray channels() As ChannelType)
あるしかし、私はそのように感じてほぼ振り出しに戻っ私を置く、混乱し、そしてストレートフォワード小さくなるように、そのメソッドの私の実装が必要です。
それは賢いです! –
私はこの答えがそれを得ると思う...ごめんなさい@メタナイト!私はコンパイラのフィードバックをどのように得るのが好きで、引数を繰り返すために 'ParamArray'で単一の項目を連結するのではなく、単純に' ParamArray'を反復することができるという単純な使いやすさを得ています。 –
@JeffBridgman:このコードは、別々の引数を持つアプローチとは異なり、最初のアイテムとそれ以外の配列を渡す必要はなく、すべてのパラメータを含む配列を渡すことができます。結果として、引数リストが空の呼び出しを禁止することはできますが、コンパイル時に空の配列で呼び出しを禁止することはできません。 – supercat