我看了 安德斯谈到了 C # 4.0和 C # 5.0的预览版,它让我思考 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);
在我看来,这种类型的模式可以通过使用三个构造函数来简化,并且对于那些可以默认的构造函数使用可选的参数,这将使不同的构造函数家族更加明显[注意: 我知道这种改变不会在 BCL 中进行,我只是针对这种情况进行假设]。
你觉得怎么样?从 C # 4.0开始,将密切相关的构造函数和方法组作为一个具有可选参数的单一方法,是否更有意义,或者是否有充分的理由坚持传统的多重载机制?