Anders'in C # 4.0 hakkında konuşmasını ve C # 5.0'ın gizli bir önizlemesini izliyordum ve bu, C # ' da isteğe bağlı parametrelerin ne zaman mevcut olduğunu düşünmemi sağladı, belirtilen tüm parametrelere ihtiyaç duymayan yöntemleri bildirmek için önerilen yol nedir?
Örneğin, FileStream
sınıf gibi bir şey , mantıksal 'ailelere' bölünebilen yaklaşık on beş farklı kurucuya sahiptir, örneğin aşağıdakiler bir dizeden, bir'den olanlar IntPtr
ve a'dan olanlar 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);
Bana öyle geliyor ki, bu tür bir model yerine üç kurucuya sahip olmak ve varsayılan olabilenler için isteğe bağlı parametreler kullanmak suretiyle basitleştirilebilir, bu da farklı kurucu ailelerini daha belirgin hale getirir [not: Bu değişikliğin olmayacağını biliyorum BCL'de yapıldı, bu tür durumlar için varsayımsal olarak konuşuyorum].
Ne düşünüyorsun? C # 4.0'dan itibaren, yakından ilişkili kurucu gruplarını ve yöntemleri isteğe bağlı parametrelerle tek bir yöntem haline getirmek daha mantıklı olacak mı, yoksa geleneksel çok yükleme mekanizmasına bağlı kalmak için iyi bir neden var mı?