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