Saya menonton pembicaraan Anders tentang C # 4.0 dan pratinjau diam-diam C # 5.0 , dan itu membuat saya berpikir tentang kapan parameter opsional tersedia di C # apa yang akan menjadi cara yang disarankan untuk menyatakan metode yang tidak memerlukan semua parameter yang ditentukan?
Misalnya sesuatu seperti FileStream
kelas memiliki sekitar lima belas konstruktor berbeda yang dapat dibagi menjadi 'keluarga' logis misalnya yang di bawah dari sebuah string, yang dari an IntPtr
dan yang dari 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);
Tampak bagi saya bahwa jenis pola ini dapat disederhanakan dengan memiliki tiga konstruktor, dan menggunakan parameter opsional untuk salah satu yang dapat default, yang akan membuat keluarga konstruktor yang berbeda lebih berbeda [catatan: Saya tahu perubahan ini tidak akan terjadi dibuat di BCL, saya sedang berbicara hipotetis untuk jenis situasi ini].
Bagaimana menurut anda? Dari C # 4.0 akan lebih masuk akal untuk membuat kelompok konstruktor dan metode yang terkait erat sebagai metode tunggal dengan parameter opsional, atau adakah alasan yang baik untuk tetap menggunakan mekanisme banyak-kelebihan tradisional?