Я не могу придумать никаких причин, почему один лучше другого. Сравните эти две реализации:
public class MyClass
{
public MyClass(string fileName)
{
// some code...
}
}
в отличие от:
public class MyClass
{
private MyClass(){}
public static MyClass Create(string fileName)
{
// some code...
}
}
В инфраструктуре .NET есть несколько мест, которые используют статический метод для создания экземпляров. Сначала я думал, что он регистрирует экземпляры, чтобы отслеживать их, но обычные конструкторы могли бы сделать то же самое с помощью частных статических переменных.
Какова причина этого стиля?