C#4.0についてのアンダースの話とC#5.0のプレビューを見ていて、C#でオプションのパラメーターが利用できる場合、すべてのパラメーターを指定する必要のないメソッドを宣言するために推奨される方法は何かを考えましたか?
たとえば、何かFileStream
のクラスは、論理の家族'という文字列から、以下の例のものに分けることができる15程度異なるコンストラクタ、からのものがあるIntPtr
とAからのものをSafeFileHandle
。
FileStream(string,FileMode);
FileStream(string,FileMode,FileAccess);
FileStream(string,FileMode,FileAccess,FileShare);
FileStream(string,FileMode,FileAccess,FileShare,int);
FileStream(string,FileMode,FileAccess,FileShare,int,bool);
このタイプのパターンは、代わりに3つのコンストラクターを使用し、デフォルトのパラメーターにオプションのパラメーターを使用することで簡略化できるように思えます。これにより、コンストラクターの異なるファミリーをより明確にすることができますBCLで作成された、私はこの種の状況について仮説的に話している]。
どう思いますか?C#4.0以降では、コンストラクターとメソッドの密接に関連するグループをオプションのパラメーターを持つ単一のメソッドにする方が理にかなっていますか、それとも従来の多くのオーバーロードメカニズムに固執する十分な理由がありますか?