Я смотрел рассказ Андерса о 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 будет ли разумнее объединить тесно связанные группы конструкторов и методов в один метод с необязательными параметрами, или есть веская причина придерживаться традиционного механизма с множеством перегрузок?