Je regardais la présentation d'Anders sur C # 4.0 et un aperçu de C # 5.0 , et cela m'a fait réfléchir à quand les paramètres facultatifs sont disponibles en C #, quelle sera la manière recommandée de déclarer des méthodes qui n'ont pas besoin de tous les paramètres spécifiés?
Par exemple, quelque chose comme la FileStream
classe a une quinzaine de constructeurs différents qui peuvent être divisés en «familles» logiques, par exemple ceux ci-dessous à partir d'une chaîne, ceux de an IntPtr
et ceux de 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);
Il me semble que ce type de modèle pourrait être simplifié en ayant trois constructeurs à la place, et en utilisant des paramètres optionnels pour ceux qui peuvent être par défaut, ce qui rendrait les différentes familles de constructeurs plus distinctes [note: je sais que ce changement ne sera pas fait dans la BCL, je parle hypothétiquement pour ce type de situation].
Qu'est-ce que tu penses? À partir de C # 4.0, sera-t-il plus logique de créer des groupes de constructeurs et de méthodes étroitement liés en une seule méthode avec des paramètres optionnels, ou y a-t-il une bonne raison de s'en tenir au mécanisme traditionnel de surcharge multiple?