Stavo guardando il discorso di Anders su C # 4.0 e l'anteprima di C # 5.0 , e mi ha fatto pensare a quando i parametri opzionali sono disponibili in C # quale sarà il modo consigliato per dichiarare metodi che non richiedono tutti i parametri specificati?
Ad esempio, qualcosa come la FileStream
classe ha circa quindici costruttori diversi che possono essere suddivisi in "famiglie" logiche, ad esempio quelli sotto di una stringa, quelli di an IntPtr
e quelli di 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);
Mi sembra che questo tipo di pattern potrebbe essere semplificato avendo invece tre costruttori e usando parametri opzionali per quelli che possono essere impostati come predefiniti, il che renderebbe le diverse famiglie di costruttori più distinte [nota: so che questo cambiamento non sarà made in BCL, sto parlando ipoteticamente per questo tipo di situazione].
Cosa ne pensi? Da C # 4.0 avrà più senso rendere i gruppi strettamente correlati di costruttori e metodi un unico metodo con parametri opzionali, o c'è una buona ragione per attenersi al tradizionale meccanismo di molti sovraccarichi?