C# 4.0 と C# 5.0 のスニーク プレビューについての Anders の講演を見ていて、C#でオプションのパラメーターがいつ利用可能になるかについて考えさせられました。
たとえば、FileStream
クラスのようなものには、論理的な「ファミリー」に分割できる約 15 の異なるコンストラクターがありIntPtr
ます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 から、密接に関連するコンストラクターとメソッドのグループをオプションのパラメーターを持つ単一のメソッドにすることはより理にかなっていますか?それとも、従来の多オーバーロード メカニズムに固執する正当な理由はありますか?