我正在看Anders谈论C#4.0和C#5.0的预览,这让我思考什么时候C#中有可选参数可用,这是声明不需要指定所有参数的方法的推荐方式吗?
例如,类似FileStream该类的东西有大约十五个不同的构造函数,这些构造函数可以划分为逻辑“族”,例如,字符串中的下面的那些,an中的一个IntPtr和a中的一个SafeFileHandle。
FileStream
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开始,将密切相关的构造函数和方法组作为具有可选参数的单个方法会更有意义,还是有充分的理由坚持传统的多次重载机制?
我会考虑以下几点:
我还没有检查默认值的工作方式,但我假设默认值将包含在调用代码中,与对const字段的引用几乎相同。通常没关系-更改默认值还是很重要的- 但这是要考虑的事情。
const