Я смотрел Рассказ Андерса о С# 4.0 и предварительный просмотр С# 5.0, и мне стало интересно, когда доступны дополнительные параметры С#, что будет рекомендуемым способом объявить методы, которым не нужны все указанные параметры?
Например, что-то вроде класса 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, я гипотетически говорю об этом типе ситуации].
Как вы думаете? Из С# 4.0 будет ли более целесообразным создание тесно связанных групп конструкторов и методов с единственным методом с необязательными параметрами или есть веская причина придерживаться традиционного механизма многогрузов?