我正在观看Anders 关于 C# 4.0 和 C# 5.0 预览的谈话,这让我想到了当可选参数在 C# 中可用时,推荐的方式来声明不需要指定所有参数的方法?
例如,类之FileStream
类的东西有大约 15 个不同的构造函数,它们可以分为逻辑“家族”,例如来自字符串的下面的那些,来自 anIntPtr
的那些和来自 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);
在我看来,这种类型的模式可以通过使用三个构造函数来简化,并对可以默认的参数使用可选参数,这将使不同的构造函数家族更加不同[注意:我知道这种变化不会在 BCL 中制造,我是在假设这种情况]。
你怎么看?从 C# 4.0 开始,将密切相关的构造函数和方法组制作成具有可选参数的单个方法会更有意义,还是有充分的理由坚持传统的多重载机制?