C # jeneriklerinde, type parametresinin T
varsayılan yapıcıya sahip olması için bir kısıtlama söyleyerek söyleyebiliriz where T : new()
. Bununla birlikte, bunun gibi başka hiçbir kısıtlama geçerli değildir - new(string)
örneğin, vb.
Bir dil tasarımı ve / veya uygulama bakış açısından, bunun nedeni nedir?
Yapıcıların çalışma biçiminde ya da bunu yasaklayan (ya da en azından zorlaştıran) tip sisteminin uygulanma biçiminde bir şey var mı? Eğer öyleyse, nedir? Ben bir yere okumaya hatırlıyorum default(T)
aslında derler new T()
için T : struct
. Bununla ilgili mi belki?
Ya da dili çok karmaşık hale getirmekten kaçınmak için verilen bir tasarım kararı mı?
new(string)
varsayılan bir yapıcı kısıtlaması değildir. Sorunuz "Neden belirli kurucu imzaları gerektiren kısıtlamalar yok?" Muhtemelen böyle bir kısıtlama özellikle yararlı olmaz.